Professional Documents
Culture Documents
HCM
2
Nội dung
3
Mô hình MVC – MVP - MVVM
MVC, MVP, và MVVM là 3 mô hình thông dụng khi phát triển phần mềm.
Nó giúp người lập trình dễ kết hợp, dễ kiểm thử và dễ duy trì.
4
Mô hình MVC – MVP - MVVM
5
Mô hình MVC
Model
Model nghĩa là các dữ liệu cần thiết để hiển thị ở View. Model đại diện cho một tập
hợp các lớp mô tả business logic (business model và data model). Nó cũng định
nghĩa các business rules cho dữ liệu (nghĩa là cách mà dữ liệu thay đổi và được
dùng)
View
View đại diện cho các thành phần UI như XML, HTML. View sẽ hiển thị dữ liệu đã
qua xử lý từ Controller. Model và View tương tác với nhau qua Observer pattern.
Controller
Controller có trách nhiệm xử lý các yêu cầu (request) được gửi đến. Nó sẽ xử lý các
dữ liệu của người dùng qua Model và trả về kết quả ở View
6
Mô hình MVC – Ví dụ
MVC rất tốt trong việc phân chia Mặt hạn chế của Controller
model và view. •Khả năng kiểm thử (test) - Controller bị
- Dễ dàng test model vì nó không ràng buộc với Android API nên sẽ khó để
liên quan đến view và view thực hiện unit test.
không có gì nhiều để test (unit •Tính linh hoạt - Controller liên quan khá
test). chặt chẽ với các view. Nếu chúng ta thay
- Tuy nhiên Controller vẫn còn đổi view chúng ta sẽ phải thay đổi lại ở
nhiều hạn chế controller.
- Khắc phục bằng mô hình MVP •Khả năng duy trì - Qua thời gian,
controller sẽ ngày càng phình to ra do việc
thêm code dẫn đến việc khó kiểm soát.
7
Mô hình MVC – Code (1)
8
Mô hình MVC – Code (2)
9
Mô hình MVC – Code (3)
10
Mô hình MVP
▪ Mô hình MVP cũng gần giống với mô hình MVC. Nó được kế thừa
từ mô hình MVC, trong đó Controller được thay thế bới Presenter.
▪ Mô hình này chia ứng dụng thành 3 phần chính: Model, View và
Presenter
Model
Đại diện cho một tập hợp các lớp mô tả business logic. Nó cũng định
nghĩa các business rules cho dữ liệu (nghĩa là cách mà dữ liệu thay
đổi và được dùng)
View
View là thành phần tương tác trực tiếp với người dùng. Nó không bao
gồm bất kỳ việc xử lý logic nào.
Presenter
Presenter sẽ nhận input của người dùng thông qua View, rồi xử lý dữ
liệu của người dùng với sự trợ giúp của Model và trả kết quả về View.
Presenter giao tiếp với View qua interface.
11
Mô hình MVP
▪ Trong cấu trúc MVP, presenter thao túng (xử lý) model và cập
nhật ở view.
▪ View và Presenter tách biệt với nhau hoàn toàn và giao tiếp với
nhau qua thông qua interface. Vì nếu tách riêng từng phần ở
view sẽ dễ dàng cho việc kiểm thử ứng dụng ở MVP hơn so với
mô hình MVC.
12
Mô hình MVP – Code ví dụ
13
Mô hình MVVM (Model-View-
ViewModel)
14
Mô hình MVVM (Model-View-
ViewModel)
• Mô hình MVVM hỗ trợ two-way data binding giữa View
và View-Model. Điều này cho phép tự động lan truyền
sự thay đổi, trong state của View-Model đến View.
• View-Model sử dụng mô hình observer để thông báo sự
thay đổi trong View-Model đến Model.
• MVVM sẽ tốn bộ nhớ hơn
• Cả MVP và MVVM đều tốt hơn MVC trong việc chia nhỏ
ứng dụng thành các modular, các component đơn mục
đích, nhưng chúng cũng làm ứng dụng phức tạp hơn.
• Với một ứng dụng đơn giản với chỉ với vài screen, MVC
là đủ.
• MVVM với data binding sẽ ít code hơn.
15
Nguyên tắc hoạt động của web
16
Nguyên tắc hoạt động của web
17
Mô hình MVC trong lập trình
web
18
Mô hình MVC trong lập trình
web
19
Hyper Text Markup Language
https://www.w3schools.com/html/html_intro.asp
https://www.w3.org/html/ 20
Cấu trúc trang web
21
22
HTML Form
24
HTML Form
• Enctype
▪ application/x-www-form-urlencoded: tất cả các ký tự
được mã hóa trước khi gửi
▪ multipart/form-data: không mã hóa ký tự, bắt buộc
khi sử dụng file upload
▪ text/plain: khoảng trắng thành +, còn lại không mã
hóa
• Name: sử dụng xác định cây DOM
https://www.w3schools.com/html/html_forms.asp 25
Thuộc tính enctype trong HTML
<form>
26
Thuộc tính enctype trong HTML
<form>
27
Thuộc tính enctype trong HTML
<form>
28
Thuộc tính enctype trong HTML
<form>
Sự khác nhau giữa 2 thuộc tính:
x-www-form-urlencoded multipart/form-data
Toàn bộ dữ liệu form gửi Chia thành nhiều khúc để
dưới dạng chuỗi dài gửi và mỗi phần được
tách biệt bởi chuỗi
boundary
Thường dùng gửi text Thường dùng gửi binary
Phải encode các ký tự Không cần encode
Hiệu quả hơn
29
HTML Form
31
JavaScript có thể làm gì?
32
JavaScript – Ví dụ
33
JavaScript có thể đặt ở đâu?
• Trong HTML:
• JS code đặt giữa <script> và </script>
• JS code có thể đặt trong file .js riêng
Dùng thuộc tính src (source) = “URL”
Ưu điểm:
• Tách biệt code với HMTL
• Dùng lại code
• Dễ đọc và bảo trì
• Cache JS để tăng tốc độ load trang
• Thẻ <script> có thể đặt tại <head> hoặc <body>
34
JavaScript – Hiển thị dữ liệu
35
Một số lưu ý
36
JavaScript Function
38
JavaScript Function
39
JavaScript - Object
• Định nghĩa:
40
JavaScript - Object
• Sử dụng:
• Truy cập thuộc tính:
• objectName.propertyName
• objectName.propertyName
• Truy cập phương thức:
objectName.methodName()
• Lưu ý:
KHÔNG KHAI BÁO
String, Number và Boolean như Object
41
JavaScript Event
42
JavaScript Event
43
JavaScript Event
https://www.w3schools.com/Js/js_events_examples.asp
44
JavaScript Form
45
JavaScript Form
46
Xác thực dữ liệu
47
48
Document Object Model
https://www.w3schools.com/js/js_htmldom.asp
https://www.w3.org/DOM/
https://dom.spec.whatwg.org/ 49
HTML DOM
50
Cấu trúc DOM
52
Cấu trúc DOM
53
Cấu trúc DOM
54
Một số thuộc tính phổ biến
55
Một số thuộc tính phổ biến
• nodeValue
• nodeName
• nodeType
• document.body: body của HTML
• document.documentElement: toàn bộ nội dung
HTML
56
Một số phương thức phổ biến
57
https://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_doc_writeln
Thêm / Xóa HTML element
58
Tìm đối tượng HTML
https://www.w3schools.com/Js/js_htmldom_document.asp 59
Thêm Event dùng HTML DOM
60
HTML DOM EventListener
• Ví dụ:
1.
2.
3.
4.
62
Thuộc tính quan hệ
63
Truy xuất DOM
childNodes
64
Truy xuất DOM
• Node.parentNode:
Node.parentNode.parentNode.
• Node.childNodes: trả về array
• Node.firstChild:
Node.childNodes[0].
• Node.lastChild:
Node.childNodes[Element.childNodes.length-1].
• Node.nextSibling
• Node.previousSibling
65
Truy xuất DOM
66
Browser Object Model
67
Asynchronous JavaScript And
XML
• Giới thiệu:
• Không là ngôn ngữ lập trình
• Là sự kết hợp: XHR, JS và HTML DOM
• Chức năng:
• Đọc dữ liệu từ server sau khi trang đã load
• Cập nhật trang web mà không cần reload
• Gửi dữ liệu “ngầm” đến server
68
Nguyên tắc hoạt động
69
XMLHttpRequest
https://www.w3schools.com/xml/dom_httprequest.asp
70
Ajax
71
Ví dụ: GET
72
Ví dụ: POST
73
jQuery
74
jQuery – Cú pháp
$(selector).action()
• $: định nghĩa, truy cập jQuery
• (selector): tìm HTML element
• action(): hành động muốn thực hiện
• Ví dụ:
• $(this).hide(): ẩn element hiện tại
• $("p").hide(): ẩn tất cả <p>
• $(".test").hide(): ẩn tất cả element có class="test"
• $("#test").hide(): ẩn element có id="test"
75
jQuery
76
jQuery
Selector
77
jQuery Event
• Cú pháp:
78
jQuery - AJAX get()
• Cú pháp:
• URL: chỉ URL muốn request
• Callback: tên hàm thực thi
• Ví dụ:
79
jQuery - AJAX post()
• Cú pháp:
• URL: chỉ định URL muốn request
• Data: dữ liệu muốn gửi
• Callback: tên hàm muốn thực thi
• Ví dụ:
80
Same Origin Policy
https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy
https://www.w3.org/Security/wiki/Same_Origin_Policy
81
SOP
Host
Origin = Port
Protocol
Cho URL:
http://store.company.com/dir/page.html
URL Kết quả Nguyên nhân
http://store.company.com/dir2/other.html
http://store.company.com/dir/inner/another.html
https://store.company.com/secure.html
http://store.company.com:8080/secure.html
http://shop.company.com/secure.html
82
SOP
83
Danh sách đề tài (chưa cập
nhật)
1. Android Security
2. IOS Security
3. OWASP Testing Guide
4. VEGA – Vulnerability Scanner
5. Nikto
6. Acunextix
7. ZAP
8. Search exploit – Exploit DB
84
Danh sách đề tài (chưa cập
nhật)
85
Tóm tắt
86
Bảo mật web và ứng dụng
ThS. Phan Thế Duy