File upload
❖ Prevention Methods:
▪ The file types allowed to be uploaded should be restricted to
only those that are necessary for business functionality.
▪ Never accept a filename and its extension directly without having
a whitelist filter.
▪ The application should perform filtering and content checking on
any files which are uploaded to the server.
▪ It is necessary to have a list of only permitted extensions on the
web application.
▪ All the control characters and Unicode ones should be removed
from the filenames and their extensions without any exception.
▪ Limit the filename length.
▪ Uploaded directory should not have any “execute” permission
and all the script handlers should be removed from these
directories.
▪ Limit the file size to a maximum value in order to prevent denial
of service attacks.
▪ The minimum size of files should be considered.
▪ Use Cross Site Request Forgery protection methods.
Command Injection
❖ How to prevent:
▪ Validating against a whitelist of permitted values.
▪ Validating that the input is a number.
▪ Validating that the input contains only alphanumeric
characters, no other syntax or whitespace.
695 trang |
Chia sẻ: hachi492 | Ngày: 06/01/2022 | Lượt xem: 379 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Bài giảng Web Technologies and e-Services - Đại học Bách khoa Hà Nội, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
của
thuộc tính (atribute) sẽ theo qui luật đặt tên giống như đối với tên thẻ.
• Các thẻ (tag) trong XML có thể lồng nhau (Thẻ này có thể chứa nhiều thẻ
khác ở bên trong).
23
Nội dung tài liệu XML
•Nội dung của tài liệu XML bao gồm 2 phần:
•Nội dung chính: Hệ thống các thẻ đánh dấu (có hoặc
không có nội dung) tương ứng với các thông tin cần
biểu diễn.
•Nội dung phụ: Hệ thống các thẻ khác có ý nghĩa bổ
sung, tăng cường một số thông tin về tài liệu XML. Các
thẻ này có tác dụng giúp cho việc sử dụng, xử lý trên tài
liệu XML tốt hơn trong một số trường hợp nhất định.
24
Nội dung tài liệu XML
•Các thẻ bên trong nội dung phụ bao gồm:
•Thẻ khai báo tham số
•Thẻ chỉ thị xử lý
•Thẻ ghi chú
•Thẻ CDATA
•Thẻ khai báo cấu trúc (đặc tả cấu trúc với DTD)
•Thẻ khai báo thực thể (Kĩ thuật đặc tả nội dung tài liệu
XML)
25
Thẻ khai báo tham số
•Thẻ khai báo tham số: mô tả thêm một số thông tin
chung (tham số) về tài liệu XML ngoài các thông tin
biểu diễn trong nội dung chính.
•Cú pháp:
•Ten_1, Ten_2, : các tên các tham số và Gia_tri_1,
Gia_tri_2, là các giá trị tương ứng. Có 3 tham số
được dùng là version, encoding, và standalone.
26
Thẻ khai báo tham số
•Tham số version : Khai báo về phiên bản của định
chuẩn XML được sử dụng.
•Ví dụ :
Tài liệu XML thuộc định chuẩn 1.0
27
Thẻ khai báo tham số
•Tham số encoding : Khai báo về cách mã hóa các ký tự
trong tài liệu.
•Ví dụ: Tài liệu XML sử dụng cách mã hóa Unicode ký
hiệu utf-8:
Tài liệu XML sử dụng cách mã hóa Unicode ký hiệu
utf-16:
28
Thẻ khai báo tham số
•Tham số standalone : Khai báo về liên kết của tài liệu
XML.
•Tham số này chỉ có 2 giá trị hợp lệ là “yes” , “no”. Giá trị
định sẵn là “no”.
•Ví dụ: Tài liệu XML có liên kết với các tài liệu khác:
•Tài liệu XML không có liên kết với các tài liệu khác:
29
Thẻ chỉ thị xử lý
•Thẻ chỉ thị xử lý: cho phép mô tả thêm một số thông tin
(liên quan xử lý) về tài liệu XML có ý nghĩa riêng với
một công cụ xử lý nào đó.
•Dạng khai báo chung:
Bo_xu_ly là ký hiệu của bộ xử lý sẽ tiến hành một số
xử lý nào đó trên tài liệu XML . Du_lieu là thông tin
được gởi đến Bo_xu_ly.
30
Thẻ chỉ thị xử lý
•Ví dụ:
<?xml-stylesheet type=”text/css”
href=”Dinh_dang.css” ?>
•Là thẻ chỉ thị cần xử lý định dạng thể hiện tài liệu
XML với “chương trình định dạng ” theo ngôn ngữ
css được lưu trữ bên trong tập tin Dinh_dang.css.
31
Thẻ ghi chú
•Thẻ ghi chú: cho phép bổ sung các thông tin ghi chú có ý
nghĩa đối với con người và hoàn toàn không có ý nghĩa
với các hệ thống xử lý tài liệu XML.
•Cú pháp:
•Chú ý:
• Trong nội dung của ghi chú không có ký tự “-“.
• Không nên đặt ghi chú trong 1 thẻ (Thuộc giới hạn mở
thẻ đóng thẻ).
•Không nên đặt ghi chú trước dòng khai báo
.
32
Thẻ CDATA
•CDATA (Unparsed Character Data): yêu cầu các bộ
phân tích tài liệu XML Parser bỏ qua và không phân
tích vào nội dung bên trong của thẻ này.
•Tác dụng của thẻ là cho phép sử dụng trực tiếp bên
trong thẻ một số ký hiệu không được phép nếu sử dụng
bên ngoài ( ví dụ các ký tự “” , ).
•Dạng khai báo chung:
33
Thẻ PCDATA
•PCDATA (Parsed Character Data): là dữ liệu sẽ được
đọc và phân tích bởi chương trình phân tích XML.
•Trong PCDATA không được phép dùng các ký tự đặc
biệt có liên quan đến việc xác định các thành tố của
XML như ,&,
34
CDATA and PCDATA
CDATA and Comment
•CDATA is still a part of the document while a comment
is not
•In CDATA you cannot include the string ‘]]>’ (CDEnd)
while in a comment -- is valid
Cấu trúc tài liệu XML
•Khái niệm về cấu trúc tài liệu XML:
• Tương ứng với cấu trúc của nội dung chính
• Cách thức tổ chức, sắp xếp của các thẻ (có hay không có nội
dung) trong nội dung chính.
•Ngôn ngữ đặc tả cấu trúc: Có rất nhiều ngôn ngữ đặc
tả để mô tả cấu trúc tài liệu Xml như: DTD, XML
Schema, XMl- Data, Schematron , RELAX NG, v,v..
.Trong số đó có 2 ngôn ngữ thông dụng là DTD, XML
Schema.
37
Cấu trúc tài liệu XML
•Đặc điểm của DTD:
•Ra đời rất sớm
•Cho phép mô tả văn bản có cấu trúc bất kỳ
•Đơn giản, dễ học và sử dụng
•Chỉ cho phép đặc tả một số “kiểu dữ liệu đơn giản” trong
nội dung chính của tài liệu XML
•Đặc điểm của XML Schema:
•Được đề xuất bởi W3C
•Chỉ áp dụng cho tài liệu XML
•Khó học và sử dụng so với DTD
•Cho phép đặc tả chi tiết về các “kiểu dữ liệu” được sử dụng
trong nội dung chính của tài liệu XML
38
Cấu trúc tài liệu XML
•Ví dụ : Với tài liệu Xml:
4
3
39
Cấu trúc tài liệu XML
•Đặc tả với DTD:
<!DOCTYPE PHAN_SO [
0 -->
0 -->
]>
40
Cấu trúc tài liệu XML
• Đặc tả với Xml Schema:
<xs:schemaid="PHAN_SO" targetNamespace=""
xmlns:xs="">
<xs:element name="Tu_so"type="SO_NGUYEN_DUONG"
minOccurs="1"maxOccurs="1"/>
<xs:element name="Mau_so"type=" SO_NGUYEN_DUONG "
minOccurs="1"maxOccurs="1” />
41
Sử dụng đặc tả cấu trúc
•Ý nghĩa của đặc tả cấu trúc: Có 2 trường hợp chính
cần thiết sử dụng các tài liệu đặc tả cấu trúc:
• Trường hợp 1 : Sử dụng cho việc trao đổi thông tin người –
người.
• Trường hợp 2 : Sử dụng cho việc trao đổi thông tin người – hệ
thống xử lý.
42
Sử dụng đặc tả cấu trúc
•Trường hợp 1: với trường hợp này tài liệu đặc tả cấu
trúc được sử dụng như phương tiện giao tiếp giữa các
chuyên viên tin học có liên quan đến tài liệu XML tương
ứng.
•Có thể được lưu trữ theo bất kỳ định dạng nào thích
hợp cho việc sử dụng ( trình bày, xem báo cáo , v.v..).
43
Sử dụng đặc tả cấu trúc
•Ví dụ: Có thể sử dụng các tài liệu đặc tả cấu trúc (DTD/
XML Schema trên ) trong:
• Hồ sơ thiết kế phần mềm hay giáo trình này ( theo dạng tập tin
của Microsoft Word)
• Tài liệu mô tả cách thức trao đổi thông tin giữa các chuyên viên
tin cùng xây dựng các phần mềm bài tập phân số.
•Có thể có một số qui ước riêng mang tính cục bộ trong
một nhóm, có thể mở rộng các ngôn ngữ đặc tả cấu
trúc hiện có để bổ sung thêm các từ vựng, cú pháp và
ngữ nghĩa riêng.
44
Sử dụng đặc tả cấu trúc
•Trường hợp 2: chỉ được sử dụng khi Có hệ thống xử lý
(phần mềm, hàm , đối tượng thư viện ) “hiểu” và thực
hiện các xử lý tương ứng nào đó với tài liệu đặc tả cấu
trúc.
•Xử lý thông dụng nhất là kiểm tra một tài liệu XML có
theo đúng cấu trúc được mô tả trong tài liệu đặc tả cấu
trúc hay không.
45
Sử dụng đặc tả cấu trúc
•Ví dụ :
•Sử dụng các tài liệu đặc tả cấu trúc (DTD/ XML
Schema) với bộ phân tích XmlTextReader trong
VB.NET để kiểm tra tính hợp lệ của tài liệu XML.
•Với các Ứng dụng thương mại điện tử việc trao
đổi các tài liệu XML liên quan các nghiệp vụ
thương mại (thông tin về các mặt hàng, đơn đặt
hàng , phiếu giao hàng, v.v) đặt ra nhu cầu
thật sự về việc kiểm tra một tài liệu XML có đúng
theo cấu trúc mong đợi hay không.
46
Kĩ thuật đặc tả nội dung
•Sử dụng thẻ thực thể: cho phép tài liệu XML tham
chiếu đến một tập hợp các giá trị chuẩn bị trước dưới
dạng một tên gợi nhớ (tên thực thể).
•Mỗi cách thức tham chiếu và “loại” của tập hợp giá trị
được tham chiếu tương ứng với một ý nghĩa nào đó
47
Sử dụng thẻ thực thể
•
<!DOCTYPE example [
<!ENTITY copyright-notice "Copyright © 2006, XYZ
Enterprises">
]>
©right-notice;
•Khi xem tại một trình duyệt thích hợp, tài liệu XML trên sẽ
được hiển thị:
Copyright © 2006, XYZ Enterprises
48
Sử dụng thẻ thực thể
Có 4 dạng sử dụng chính các thực thể:
• Dạng 1 : Tham chiếu đến một chuỗi giá trị bên trong tài liệu
XML đang xem xét
• Dạng 2 : Tham chiếu đến các ký tự đặc biệt được định nghĩa
trước
• Dạng 3 : Tham chiếu đến một tập hợp các giá trị bên ngoài tài
liệu
• Dạng 4 : Tham chiếu đến một tài liệu XML khác.
49
Sử dụng thẻ thực thể
•Cú pháp khai báo và sử dụng chung các thẻ khai báo
thực thể (cho cả 4 dạng):
<!DOCTYPE Ten_goc [
Khai báo thực thể X
Khai báo thực thể Y
] >
•Sử dụng:
&X;
&Y;
50
Sử dụng thẻ thực thể
• Dạng 1: Tham chiếu đến một chuỗi giá trị bên trong tài liệu XML đang
xem xét.
• Dạng khai báo và sử dụng:
<!DOCTYPE Goc [
]>
&Ten_2;
&Ten_2;
&Ten_2;
51
Sử dụng thẻ thực thể
•Dạng 2: tham chiếu đến các kí tự đặc biệt được định
nghĩa trước.
•Các kí tự đặc biệt:
<Ký tự <
> Ký tự >
"Ký tự nháy kép “
' Ký tự nháy đơn ‘
&Ký tự &
52
Sử dụng thẻ thực thể
•Ví dụ sử dụng một thực thể XML khai
báo trước để biểu diễn dấu & trong tên
"AT&T":
AT&T
53
Sử dụng thẻ thực thể
•Sử dụng các ký tự thông qua mã số trong cách mã hóa:
•Nếu dùng hệ thập phân:
So_thap_phan;
Ký tự có mã số là số thập phân. Ví dụ :
0 Số 0
a Ký tự a
Nếu dùng hệ thập lục phân:
So_thap_luc_phan;
Ký tự có mã số là số thập lục phân. Ví dụ :
0 Ký số 0
A Ký tự a
54
Sử dụng thẻ thực thể
•Dạng 3: Tham chiếu đến một tập hợp các giá trị bên
ngoài tài liệu XML:
•Ý nghĩa :
• Cho phép tham chiếu đến tập tin chứa giá trị cần sử dụng. Các
giá trị này không nhất thiết theo định chuẩn XML.
• Cách sử dụng này của thực thể thông thường để bổ sung vào
nội dung các hình ảnh, âm thanh, v.v.v.
55
Sử dụng thẻ thực thể
•Cú pháp:
Thực thể Ten_thuc_the tham chiếu đến tập tin có vị
trí được cho bởi Ten_tap_tin
•Ten_tap_tin bao hàm cả đường dẫn
•Có thể dùng địa chỉ URL như Ten_tap_tin
56
Sử dụng thẻ thực thể
•Ví dụ: giả sử đã có tập tin Hinh.jpg lưu trữ hình ảnh
một nhân viên trong thư mục hiện hành.
<!DOCTYPE NHAN_VIEN [
]>
.
57
Sử dụng thẻ thực thể
•Dạng 4: tham chiếu một tài liệu XML khác, cho phép
phân rã tài liệu XML thành các tài liệu con được lưu trữ
trong các tập tin độc lập.
• Cú pháp:
• Ví dụ: giả sử có các tập tin Thu_tien_1.xml ,
Thu_tien_2.xml , . Thu_tien_12.xml lưu trữ thông tin
về các phiếu thu tiền trong các tháng 1,2,..12 của năm
đang xét. Tập tin Thu_tien.xml lưu trữ thông tin về các
phiếu thu trong năm đang xét sẽ là:
58
Sử dụng thẻ thực thể
<!DOC_TYPE THU_TIEN [
]>
&Thu_tien_1;
&Thu_tien_2;
&Thu_tien_12;
59
Sử dụng tên thẻ
•Kĩ thuật sử dụng tên thẻ: tên thẻ, tên các thuộc tính có
2 loại:
• Tên không có tiền tố
• Tên có tiền tố
•Tên không tiền tố: là chuỗi bao gồm các ký tự chữ (
a-z, A-Z), ký số (0-9) và một số ký tự khác như ‘–‘ , “_” ,
“.”.
60
Sử dụng tên thẻ
•Tên có tiền tố: có dạng 2 chuỗi ký tự cách nhau bới ký tự ‘:’
như sau:
Chuoi_tien_to : Chuoi_ten
•Ví dụ :
Thẻ A:MAT_HANG tương ứng thông tin về mặt hàng trong
công ty A.
Thẻ B:MAT_HANG tương ứng thông tin về mặt hàng trong
công ty B. 2 thẻ này có thể có các thuộc tính khác nhau.
61
Sử dụng tên thẻ
•Sử dụng tên có tiền tố :
•Nếu chỉ sử dụng tài liệu XML đơn lẻ, riêng cho ứng
dụng cục bộ thì không cần thiết dùng tiền tố trong
tên. Tuy nhiên nếu cần thiết tiếp nhận, kết xuất toàn
bộ/một phần tài liệu XML từ/đến một ứng dụng khác
( rất thông dụng trong thương mại điện tử ) việc sử
dụng tên với tiền tố là rất cần thiết.
•Tiền tố của tên sẽ dùng để phân biệt được nguồn
gốc của một thẻ trong tài liệu XML được tạo thành từ
nhiều tài liệu XML khác có các thẻ trùng phần tên
không tiền tố
62
Sử dụng tên thẻ
•Một tài liệu XML có thành phần dùng để mô tả đặc
điểm của 1 cái bàn với các thuộc tính: length (dài), width
(rộng), height (cao), material (vật liệu) .
•Một tài liệu XML khác cũng có một thành phần tên là
nhưng dùng để mô tả một bảng dữ liệu với các thuộc tính:
width (bề rộng của bảng), height (chiều cao của bảng) .
•Khi hệ thống tiếp nhận cùng lúc cả 2 file XML này để lấy số
liệu, rất khó để phân biệt các cấu trúc dữ liệu của XML.
•Do đó, người tạo XML phải mô tả tên thành phần và thuộc
tính sao cho những thành phần này phải là duy nhất trong
mỗi cấu trúc XML khi có sự tổng hợp thông tin từ nhiều
nguồn khác nhau.
63
Sử dụng tên thẻ
•XML mô tả thông tin của cái bàn:
<table length=”2.5m” width=”1.2m”
height=”0.9m”>
Italian coffee style
training oval wood
•XML mô tả thông tin của bảng dữ liệu:
Orange
Strawberry
64
Namespace
•Namespace giúp cho việc truy xuất đến các thành phần
(Element) một cách tường minh.
•Namespace là tập hợp các tên dùng để cho phép kết hợp với
các thành phần và thuộc tính bên trong một tài liệu XML nhằm
giải quyết nguy cơ xung đột về tên của các phần tử khi thông
tin được tổng hợp từ nhiều nguồn khác nhau.
•Thông qua Namespace, trình duyệt có thể kết hợp các file
XML từ nhiều nguồn khác nhau, có thể truy xuất đến DTD để
kiểm tra cấu trúc của XML nhận được có thực sự thích hợp, từ
đó xác định được tính hợp lệ của XML tương ứng.
65
Namespace
•Giải quyết xung đột:
Italian coffee style
training oval wood
Orange
Strawberry
66
Namespace
• Cú pháp khai báo namespace và thuộc tính xmlns:
<nameSpacePrefix:elementName xmlns:nameSpacePrefix =
“URI”>
•nameSpacePrefix: phần viết tắt đại diện cho nameSpace
được sử dụng như là tiền tố (prefix) cho các tag trong cùng
nhóm.
•xmlns: là thuộc tính được sử dụng để khai báo và chỉ ra
nameSpace cần thiết sẽ áp dụng trong cấu trúc XML.
•URI (Uniform Resource Identifier): chuỗi ký tự mô tả cho 1
nguồn tài nguyên nào đó duy nhất trên Internet.
67
Namespace
•
Apples
Bananas
African Coffee Table
80
120
68
Namespace
•<root xmlns:p=""
xmlns:s="https://www.w3schools.com/furniture">
Apples
Bananas
African Coffee Table
80
120
69
2. DTD
1. Đặc tả cấu trúc tài liệu XML với DTD
2. Đặc tả cấu trúc nội dung thẻ
3. Đặc tả thuộc tính của thẻ
DTD
•Đặc tả cấu trúc tài liệu XML với DTD
•Có nhiều dạng khác nhau cho phép khai báo (đặc tả)
cấu trúc của tài liệu XML:
•Dạng 1: Khai báo cấu trúc tài liệu XML được lưu trữ
ngay bên trong chính tài liệu XML đó:
<!DOCTYPE Ten_the_goc [
đặc tả cấu trúc nội dung các thẻ
đặc tả thuộc tính các thẻ
]>
71
DTD
•Dạng 2: Khai báo cấu trúc tài liệu XML được lưu trữ
bên ngoài dưới dạng một tập tin chứa đặc tả cấu trúc
nội dung các thẻ, đặc tả thuộc tính các thẻ. Cú pháp:
•Ví dụ :
<!DOCTYPE DUONG_TRON SYSTEM
“DUONG_TRON.dtd” >
72
DTD
•Dạng 3: Khai báo cấu trúc tài liệu XML đã được chuẩn
hóa, có phạm vi sử dụng rộng rãi.
<!DOCTYPE Ten_the_goc PUBLIC
Chuoi_nhan_dang >
73
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01
Transitional//EN" "">
Đặc tả cấu trúc nội dung thẻ
•Cú pháp chung đặc tả cấu trúc nội dung của một thẻ:
<!ELEMENT Ten_the Bieu_thuc_dac_ta
cau_truc_noi_dung >
Bieu_thuc có thể chỉ là một từ khoá
• Bieu_thuc cũng có thể bao gồm nhiều từ khóa khác mô
tả cách bố trí, sắp xếp các thành phần con bên trong thẻ
•Với A, B là 2 thẻ con của thẻ X:
A, B A, B sắp xếp theo thứ tự tuần tự A đến B
A* A có thể lặp lại ít nhất 0 lần (>=0)
B+ B có thể lặp lại ít nhất 1 lần(>=1)
A? A có thể xuất hiện 0 hoặc 1 lần (0 or1)
A|B Có thể chọn sử dụng A hay B
74
Đặc tả cấu trúc nội dung thẻ DTD
•Đặc tả cách 1:
•Từ khóa ANY : Thẻ có nội dung bất kì theo định chuẩn
XML. Ví dụ :
•X có thể chứa nội dung bất kỳ, khai báo này chỉ để
mô tả sự tồn tại của bên trong X một hoặc nhiều thẻ
khác.
•Từ khóa EMPTY : Thẻ không có nội dung. Ví dụ :
•PHAN_SO không thể có nội dung mà chỉ có thể có
các thuộc tính.
75
Đặc tả cấu trúc nội dung thẻ DTD
•Từ khóa #PCDATA : Thẻ với nội dung là chuỗi văn bản.
Ví dụ :
• Ho_ten có nội dung là chuỗi và không thể chứa các thẻ khác
•Với DTD muốn mô tả chi tiết hơn, dùng thẻ ghi chú. Ví
dụ :
76
Đặc tả cấu trúc nội dung thẻ DTD
•Đặc tả cách 2:
•Dạng tuần tự: Các thẻ con chỉ có thể xuất hiện 1 lần duy
nhất và phải theo đúng thứ tự xuất hiện trong biểu thức
•Cú pháp :
•Ý nghĩa : The_1, The_2, ..., The_k phải xuất hiện một lần
duy nhất theo đúng thứ tự trên. Ví dụ:
Thẻ DON_THUC phải bao hàm bên trong 2 thẻ con
He_so,So_mu theo đúng thứ tự trên
77
Đặc tả cấu trúc nội dung thẻ DTD
•Ghi chú: Các thẻ bên trong có thể có tên trùng nhau. Ví
dụ :
•Có thể sử dụng từ khóa #PCDATA trong biểu thức tuần
tự ( và các loại biểu thức khác ). Ví dụ :
•Thẻ X phải bao gồm 3 thành phần :
•Thành phần thứ 1 là chuỗi văn bản, thành phần thức
2 là thẻ có tên A, thành phần thứ 3 là chuỗi văn bản
78
Đặc tả cấu trúc nội dung thẻ DTD
•Dạng tùy chọn: Thẻ con có thể được sử dụng hay
không sử dụng. Cú pháp ( dạng đơn giản) :
•Thẻ đang xét có thẻ chứa 1 hay 0 lần xuất hiện của
thẻ có tên là Ten_the_con
•Ví dụ :
Thẻ DON_THUC có thể chứa hay không thẻ Ten
79
Đặc tả cấu trúc nội dung thẻ DTD
•Có thể kết hợp với biểu thức tuần tự:
•Có thể cho phép tùy chọn một tập hợp các thẻ:
•X có thể chứa bên trong các thẻ A,B,C ( theo thứ tự
trên ) hay cũng có thẻ không chứa bất kỳ thẻ nào
•Dạng chọn : Bắt buộc chọn một thẻ con để sử dụng
trong tập hợp thẻ cho trước. Cú pháp:
<!ELEMENT:
Ten_the(Ten_the_1|Ten_the_2|..|Ten_the_k) >
80
Đặc tả cấu trúc nội dung thẻ DTD
•Có thể kết hợp với biểu thức tuần tự:
• Thành phần đầu tiên của thẻ X là thẻ A, kế đến là thẻ B hay thẻ
C và thành phần cuối cùng phải là D
•Có thể cho phép chọn một tập hợp các thẻ
• X có thể bao hàm bên trong cặp thẻ A,B ( theo thứ tự trên ) hay
cặp thẻ C,D ( theo thứ tự trên )
81
Đặc tả cấu trúc nội dung thẻ DTD
•Dạng lặp:
•Dạng lặp ít nhất 0 lần : Các thẻ con có thể lặp lại
nhiều lần hay có thẻ không có lần nào. Cú pháp :
•Ý nghĩa: Thẻ đang xét có thể bao hàm bên trong
nhiều thẻ có tên là Ten_the_con hay cũng có thể là
thẻ rỗng ( không có nội dung )
•Ví dụ :
•Thẻ LOP có thẻ chứa nhiều thẻ HOC_SINH hay
không có thẻ HOC_SINH nào
82
Đặc tả cấu trúc nội dung thẻ DTD
•Có thể mô tả lặp đồng thời nhiều thẻ con
• Các thẻ A,B,C theo thứ tự trên có thẻ lặp lại ít nhất 0 lần trong
thẻ X
• Có thể kết hợp với biểu thức tuần tự. Ví dụ :
• Thẻ X có thành phần đầu tiên là thẻ A, kế đến có thể có nhiều
hay 0 lần lặp của thẻ B và cuối cùng là thẻ C
83
Đặc tả cấu trúc nội dung thẻ DTD
•Có thể kết hợp với biểu thức tùy chọn. Ví dụ :
84
Đặc tả cấu trúc nội dung thẻ DTD
•Dạng lặp ít nhất 1 lần : Các thẻ con có thể lặp lại nhiều
lần và ít nhất là một lần. Cú pháp :
•Ý nghĩa : Thẻ đang xét có thể bao hàm bên trong ít
nhất một thẻ có tên là Ten_the_con. Ví dụ :
• Thẻ DATHUC phải bao hàm bên trong ít nhất một thẻ
DON_THUC
85
Đặc tả cấu trúc nội dung thẻ DTD
•Có thể mô tả lặp đồng thời nhiều thẻ con
<!ELEMENT CT_HOA_DON
(Mat_hang,So_luong,Don_gia) + >
• Các thẻ CT_HOA_DON phải bao hàm ít nhất 1 lần 3 thẻ
Mat_hang,So_luong,Don_gia
•Có thể kết hợp với biểu thức tuần tự. Ví dụ
<!ELEMENT DA_GIAC
(DIEM,DIEM,DIEM+) >
• Các thẻ DA_GIAC phải bao hàm ít nhất 3 thẻ DIEM
86
Đặc tả thuộc tính của thẻ DTD
•Cú pháp khai báo đặc tả thuộc tính chung:
<!ATTLIST Ten_the
Ten_thuoc_tinh_1 Kieu_1 Tham_so_1
Ten_thuoc_tinh_2 Kieu_2 Tham_so_2
...
Ten_thuoc_tinh_k Kieu_k Tham_so_k
>
87
Đặc tả thuộc tính của thẻ DTD
•Ý nghĩa :
•Ten_the : tên thẻ cần khai báo các thuộc tính
•Ten_thuoc_tinh_1,Ten_thuoc_tinh_2,
...Ten_thuoc_tinh_k : Tên các thuộc tính của thẻ
•Kieu_1,Kieu_2, ..., Kieu_k : Mô tả tập hợp các giá trị
mà thuộc tính có thể nhận
•Tham_so_1,Tham_so_2,.., Tham_so_k: Mô tả một số
tính chất trên thuộc tính tương ứng
88
Đặc tả thuộc tính của thẻ DTD
•Ví dụ: Đặc tả cấu trúc tài liệu XML biểu diễn thông tin
về biểu thức phân số:
P = 4/5 + 6/7*1/3 - 10/3 +11/2*2/3
89
Đặc tả thuộc tính của thẻ DTD
<!DOCTYPE BIEU_THUC [
<ATTLIST BIEU_THUC Ten CDATA #IMPLIED
>
<ATTLIST PHAN_SO
Tu_so CDATA #REQUIRED
Mau_so CDATA #REQUIRED
0 -->
>
]>
90
Đặc tả thuộc tính của thẻ DTD
•Kiểu thuộc tính : Mô tả tập hợp các giá trị của thuộc
tính. Một số cách thông dụng mô tả:
•Cách 1 : Dùng từ khoá CDATA
Cú pháp :
<!ATTLIST Ten_the
...
Ten_thuoc_tinh CDATA
...
>
•Tập hợp các giá trị của thuộc tính với khai báo CDATA
chính là tập hợp các chuỗi
91
Đặc tả thuộc tính của thẻ DTD
•Ví dụ : Đặc tả cấu trúc tài liệu XML biểu diễn phương
trình đường thẳng trong mặt phẳng
<!DOCTYPE DUONG_THANG [
92
Đặc tả thuộc tính của thẻ DTD
<ATTLIST DUONG_THANG
Ten CDATA #IMPLIED
a CDATA #REQUIRED
b CDATA #REQUIRED
c CDATA #REQUIRED
>
]>
93
Đặc tả thuộc tính của thẻ DTD
•Cách 2: dùng biểu thức liệt kê. Cú pháp :
<!ATTLIST Ten_the
...
Ten_thuoc_tinh ( Gia_tri_1,Gia_tri_2,...._gia_tri_k) ...
>
•Ý nghĩa : Tập hợp các giá trị có thể có của thuộc tính
đang xét chính là tập hợp các giá trị được liệt kê
•Gia_tri_1,Gia_tri_2, ....,Gia_tri_k: Các giá trị này là các
chuỗi ký tự
94
Đặc tả thuộc tính của thẻ DTD
•Ví dụ: Đặc tả cấu trúc tài liệu XML biểu diễn thông tin
về phiếu điểm của một học sinh:
<!DOCTYPE PHIEU_DIEM [
<!ELEMENT PHIEU_DIEM (HOC_SINH, DIEM_SO+
) >
95
Đặc tả thuộc tính của thẻ DTD
<ATTLIST HOC_SINH
Ho_ten CDATA #REQUIRED
Ngay_sinh CDATA #REQUIRED
Xep_loai(“Giỏi”, “Khá”, Trung bình”, Yếu”)#IMPLIED
>
<ATTLIST DIEM
Ten_mon CDATA #REQUIRED
Gia_tri CDATA #REQUIRED
>
]>
96
Đặc tả thuộc tính của thẻ
•Tham số của thuộc tính: mô tả tính chất của thuộc tính,
một số cách mô tả:
•Cách 1: Dùng từ khóa #REQUIRED. Cú pháp :
<!ATTLIST Ten_the
...
Ten_thuoc_tinh Kieu #REQUIRED
...
>
•Ý nghĩa : Thuộc tính đang xét là thuộc tính bắt
buộc phải có. Đây là cách sử dụng phổ biến nhất
97
Đặc tả thuộc tính của thẻ DTD
• Ví dụ : Đặc tả cấu trúc tài liệu XML biểu diễn thông tin về các đơn
thức với tên bắt buộc phải có
<!DOCTYPE DON_THUC [
<ATTLIST DON_THUC
Ten CDATA #REQUIRED
Bien_so CDATA#REQUIRED
>
=0 -->
]>
98
Đặc tả thuộc tính của thẻ DTD
•Cách 2 : Dùng từ khóa #IMPLIED. Cú pháp :
<!ATTLIST Ten_the
...
Ten_thuoc_tinh Kieu #IMPLIED
...
>
•Ý nghĩa : Thuộc tính đang xét là tùy chọn và không bắt
buộc phải có.
99
Đặc tả thuộc tính của thẻ DTD
•Ví dụ : Đặc tả cấu trúc tài liệu XML biểu diễn thông tin về
tam thức P(x) =2x2 -4x +6.
<!DOCTYPE TAM_THUC [
<!ELEMENT TAM_THUC
(DON_THUC,DON_THUC,DON_THUC) >
<ATTLIST TAM_THUC
TenCDATA#IMPLIED
<!-- Ten : A_String
>
100
Đặc tả thuộc tính của thẻ DTD
<ATTLIST DON_THUC
He_soCDATA #REQUIRED
<!-- He_so : A_Float // Khác 0 nếu So_mu=2
-->
So_mu (0,1,2)#REQUIRED
>
]>
101
Đặc tả thuộc tính của thẻ DTD
Cách 3: Dùng từ khóa #FIXED. Cú pháp :
<!ATTLIST Ten_the
...
Ten_thuoc_tinh Kieu #FIXED Gia_tri
...
>
•Ý nghĩa : Thuộc tính đang xét phải có giá trị cố định là
Gia_tri. Trường hợp này ít được sử dụng
102
Đặc tả thuộc tính của thẻ DTD
•Ví dụ :Đặc tả cấu trúc tài liệu XML biểu diễn thông tin về các
đơn thức chỉ với biến số x:
<!DOCTYPE DON_THUC [
<ATTLIST DON_THUC
TenCDATA #REQUIRED
Bien_so CDATA #FIXED “x”
>
103
Đặc tả thuộc tính của thẻ DTD
=0 -->
]>
104
XML Schema
•XML Schema: khai báo XML Schema là tạo lập tài liệu
XML mà nội dung chính là các thẻ đánh dấu, các thẻ này
mô tả cho cấu trúc các thẻ của một tài liệu XML khác. Cú
pháp:
<xs:schema
xmlns:xs="">
Đặc tả các thẻ
Đặc tả các kiểu
105
XML Schema
•Thông tin về một thẻ được mô tả tập trung qua một
phương cách duy nhất là kiểu.
•Mỗi thẻ sẽ có tương ứng một kiểu, đặc tả kiểu mô tả
kiểu của thẻ cùng với một số thông tin khác chính là
cách sắp xếp các thành phần bên trong của thẻ và hệ
thống các thuộc tính của thẻ.
106
XML Schema
<xs:schema
xmlns:xs="">
<xs:element name="DON_THUC"
type="K_DON_THUC" minOccurs="1"/>
107
XML Schema
•Tài liệu XML có thẻ gốc là DA_THUC thẻ này có
kiểu là kiểu phức hợp tên là K_DA_THUC ( có thể
dùng cùng tên là DA_THUC).
•Kiểu phức hợp K_DA_THUC bao gồm bên trong:
•Thẻ DON_THUC có kiểu là kiểu phức hợp và thẻ
DON_THUC phải xuất hiện ít nhất 1 lần
•2 thuộc tính :
•Ten với kiểu là kiểu cơ sở dạng chuỗi
•Bien_so với kiểu là kiểu cơ sở dạng chuỗi
108
XML Schema
<xs:attribute name="So_mu"
type="SO_TU_NHIEN"/>
109
XML Schema
•Kiểu phức hợp K_DON_THUC không có nội dung và
chỉ bao gồm các thuộc tính:
• He_so có kiểu là kiểu cơ sở loại số thực
• So_mu có kiểu là kiểu đơn giản với tên SO_TU_NHIEN
•Kiểu đơn giản SO_TU_NHIEN chính là kiểu cơ sở số
nguyên với hạn chế: giá trị phải lớn hơn hay bằng 0
110
XML Schema Đặc tả kiểu
•XML Schema có 3 loại kiểu chính :
• Loại 1 : Kiểu định nghĩa sẵn (BultinType)
• Loại 2 : Kiểu đơn giản (simpleType)
• Loại 3 : Kiểu phức hợp (complexType).
111
XML Schema kiểu định nghĩa sẵn
112
XML Schema kiểu định nghĩa sẵn
•Kiểu định nghĩa sẵn – thư viện
•Ý nghĩa sử dụng :
• Được sử dụng để mô tả trực tiếp kiểu của các thuộc tính hay
của thẻ thỏa 2 điều kiện :
• Điều kiện 1 : thẻ không có thuộc tính
• Điều kiện 2 : thẻ không chứa thẻ khác (nội dung là chuỗi văn bản)
và có miền giá trị (tập hợp giá trị có thể có) thích hợp với kiểu
113
XML Schema kiểu định nghĩa sẵn
•Cú pháp :
•Khi dùng với thẻ:
<xs:element name=”Ten_the” type=”Ten_kieu_co_so” ...
/>
•Khi dùng với thuộc tính:
<xs:attribute name=”Ten_thuoc_tinh”
type=”Ten_kieu_co_so” .. />
•Ví dụ:
114
XML Schema kiểu đơn giản
•Kiểu đơn giản (simpleType): Là các kiểu do người dùng
định nghĩa dựa trên các kiểu cơ sở có sẵn.
•Ý nghĩa sử dụng: để mô tả trực tiếp kiểu của các thuộc
tính hay các thẻ thỏa mãn:
• Điều kiện 1 : Không có thuộc tính
• Điều kiện 2 : Không chứa thẻ khác ( nội dung là chuỗi văn bản)
và có miền giá trị ( tập hợp giá trị có thể có ) là tập con của
miền giá trị một kiểu cơ sở nào đó
115
XML Schema kiểu đơn giản
•Cú pháp:
Giới hạn ( ràng buộc ) trên miền giá trị
116
XML Schema kiểu đơn giản
•Khai báo cận dưới: Sử dụng từ khoá minInclusive ( cận
dưới cho phép sử dụng biên ), minExclusive ( cận dưới
không cho phép sử dụng biên)
•Khai báo cận trên: Sử dụng từ khoá maxInclusive ( cận
trên cho phép sử dụng biên), maxExclusive ( cận trên
không cho phép sử dụng biên)
117
XML Schema kiểu đơn giản
118
XML Schema kiểu đơn giản
•Giới hạn loại liệt kê trên kiểu cơ sở: Cho phép xác định
miền giá trị của kiểu đơn giản bằng cách liệt kê các giá
trị. Cú pháp:
<xs:restriction
base="Ten_kieu_co_so_loai_so">
...
119
XML Schema kiểu đơn giản
•Ví dụ:
120
XML Schema kiểu phức hợp
•Kiểu phức hợp complexType: Là các kiểu do người
dùng tự định nghĩa cho phép mô tả nội dung và các
thuộc tính của các thẻ được khai báo thuộc về kiểu
đang xét.
•Ý nghĩa sử dụng :
• Được sử dụng để mô tả kiểu của các thẻ thỏa một trong 2 điều
kiện :
• Điều kiện 1 : Có thuộc tính
• Điều kiện 2 : Có chứa thẻ khác
121
XML Schema kiểu phức hợp
•Cú pháp chung:
Dac_ta_cau_truc_noi_dung Dac_ta_thuoc_tinh
122
XML Schema kiểu phức hợp
•Dac_ta_cau_truc_noi_dung : Mô tả cách thức tổ chức,
sắp xếp các thẻ con bên trong. Tương tự như DTD, XML
Shema cho phép nhiều dạng tổ chức sắp xếp ( tuần tự,
chọn, lặp ) các thẻ con.Ngoài ra cho phép khai báo chi
tiết hơn về số lần lặp của một thành phần.
•Dac_ta_thuoc_tinh: Mô tả hệ thống các thuộc tính của
thẻ. Việc mô tả các thuộc tính trong XML Shema cũng
tương tự như mô tả thuộc tính trong DTD nhưng cho
phép định nghĩa và sử dụng các kiểu đơn giản để mô tả
chi tiết về miền giá trị của một thuộc tính.
123
XML Schema kiểu phức hợp
•Đặc tả cấu trúc nội dung dạng tuần tự:
•Dạng tuần tự : Sử dụng thẻ/từ khóa sequence. Cú
pháp :
Thanh_phan_1
Thanh_phan_2
Thanh_phan_k
....
124
XML Schema kiểu phức hợp
•Ví dụ:
125
XML Schema kiểu phức hợp
•Đặc tả cấu trúc nội dung dạng tùy chọn:
•Dạng tùy chọn : Sử dụng thẻ/từ khóa choice
Cú pháp :
Thanh_phan_1
Thanh_phan_2
Thanh_phan_k
....
126
XML Schema kiểu phức hợp
•Ví dụ :
127
XML Schema kiểu phức hợp
• Đặc tả cấu trúc nội dung dạng lặp:
• Dạng lặp : Sử dụng thuộc tính/từ khóa minOccurs , maxOcuurs.
Cú pháp:
...
<xs:element name="Ten_the_con” type="Kieu_the_con"
minOccurs=”So_lan_lap_toi_thieu”
maxOccurs=”So_lan_lap_toi_da” />
...
....
128
XML Schema kiểu phức hợp
•Ví dụ:
<xs:element name="DON_THUC”
type="DON_THUC" minOccurs=”1” />
...
129
XML Schema kiểu phức hợp
<xs:element name="DIEM” type="DIEM"
minOccurs=”3”
maxOccurs=”3” />
...
130
XML Schema kiểu phức hợp
•Đặc tả thuộc tính: cho phép mô tả hệ thống các
thuộc tính của một thẻ
•Cú pháp :
Đặc tả cấu trúc nội dung
....
<xs:attribute name="Ten_thuoc_tinh"
type="Kieu_thuoc_tinh" Tinh_chat_thuoc_tinh />
....
131
XML Schema kiểu phức hợp
•Tinh_chat_thuoc_tinh : Mô tả một số tính chất của thuộc
tính, mỗi tính chất tương ứng với một từ khóa riêng.
<xs:attribute name="Ten_thuoc_tinh"
type="Kieu_thuoc_tinh"
Tu_khoa_1=”Gia_tri_1”
Tu_khoa_2=”Gia_tri_2”
Tu_khoa_k=”Gia_tri_k” />
•Một số tính chất thông dụng:
•Giá trị định sẵn : từ khóa default
•Giá trị cố định: từ khóa fixed
•Tùy chọn (có hay không có) sử dụng : từ khóa use
132
XML Schema kiểu phức hợp
•Đặc tả thẻ: các thông tin cần mô tả khi đặc tả một thẻ
trong XML bao gồm:
• Tên thẻ
• Kiểu của thẻ
• Một số tính chất khác của thẻ
•Cú pháp khai báo:
<xs:element name=”Ten_the” type=”Ten_kieu”
Thuoc_tinh_khac />
133
XML Schema kiểu phức hợp
•Tên của kiểu: mô tả thông tin về thẻ, tên kiểu và tên thẻ
được đặt trùng nhau.
•Thuộc tính của thẻ: mô tả các tính chất của thẻ, thông
dụng nhất là minOccurs, maxOccurs .
•Khi đặc tả các thẻ vấn đề quan trong nhất là xác định
loại kiểu sẽ dùng trong thẻ.
134
XML Schema kiểu phức hợp
•Phân loại thẻ: 2 nhóm chính:
• Nhóm 1 : Nhóm các thẻ có thuộc tính
• Nhóm 2 : Nhóm các thẻ không có thuộc tính
•Với các thẻ có thuộc tính, nhất thiết phải sử dụng kiểu
phức hợp
• = > Khai báo kiểu phức hợp Y (có thể dùng tên thẻ đang xét )
• => Sử dụng Y là kiểu của thẻ đang xét
135
XML Schema kiểu phức hợp
•Các thẻ không có thuộc tính bao gồm 2 nhóm:
• Nhóm 2.1 : Nhóm các thẻ không có thuộc tính và có chứa các
thẻ con bên trong => phải sử dụng kiểu phức hợp
• Nhóm 2.2 : Nhóm các thẻ không có thuộc tính và không chứa
các thẻ con bên trong ( nội dung là chuỗi văn bản)
• Có thể chọn sử dụng kiểu cơ sở hay kiểu đơn giản phụ thuộc vào
miền giá trị của chuỗi văn bản bên trong thẻ
136
XML Schema kiểu phức hợp
•Thuật giải đặc tả thẻ: Xét loại kiểu của A:
A là kiểu phức hợp,đặc tả kiểu phức hợp A bao gồm:
•Đặc tả hệ thống các thẻ con của thẻ gốc X
•Đặc tả thẻ X1 với thông tin về kiểu (giả sử là A1)
•Đặc tả thẻ X2 với thông tin về kiểu (giả sử là A2)
• ...
•Đặc tả thẻ XK với thông tin về kiểu (giả sử là Ak)
•Đặc tả hệ thống các thuộc tính của thẻ gốc X
•Đặc tả thuộc tính T1 với thông tin về kiểu (giả sử là B1)
•Đặc tả thuộc tính T2 với thông tin về kiểu (giả sử là B2) ...
•Đặc tả thuộc tính Tk với thông tin về kiểu (giả sử là Bk)
137
XML Schema kiểu phức hợp
•A là kiểu đơn giản: Đặc tả kiểu đơn giản A bao gồm
• Đặc tả kiểu cơ sở của A
• Đặc tả các hạn chế trên kiểu cơ sở của A
138
XML Schema kiểu phức hợp
• A là kiểu cơ sở :
Không cần Đặc tả thêm
Xét loại kiểu của A1
Xét loại kiểu của A2
...
Xét loại kiểu của Ak
Xét loại kiểu của B1
Xét loại kiểu của B2
...
Xét loại kiểu của Bk
Xét loại kiểu của T1
Xét loại kiểu của T2
...
Xét loại kiểu của Tk
.....
Xét loại kiểu của các kiểu phát sinh thêm khi ñặc tả các kiểu phía trên
.....
139
Tài liệu tham khảo
•www.w3schools.com/xml
• – XML là gì
•Sách: Công nghệ XML và ứng dụng – Tác giả: Nguyễn
Tiến Huy
•Charles F. Goldfarb and Paul Prescod. XML
Handbook™, Fifth Edition. Prentice Hall, December,
2003
140
141
Bài tập trên lớp 1 – Chuyển đổi
Nguyen Kim Anh
Nguyen ly cac he co so du lieu
Cong Nghe Thong Tin
32.000
Dai Hoc Quoc Gia Ha Noi
2004
120
142
Bài tập trên lớp 2 – Sửa các lỗi
The Quest
Tom Smith
2007
Summer
1998
Susie Black
Paul White
Hello World
143
Bài tập 3 – Xác định DTD, XML Schema
Nguyen Van
Quan
KTPMK10B
Bac Ninh
Nam
31/12/1992</NgaySin
h>
1
XML
10
10
10
2
Java
10
10
10
Bài tập 3 - DTD
<!DOCTYPE PhieuDiem[
<!ELEMENT SinhVien(HoTen, Lop, DiaChi, GioiTinh,
NgaySinh)>
<!ELEMENT MonHoc(STT, TenMon, DiemKy1, DiemKy2,
DiemTB)>
]>
Bài tập 3 – XML Schema
<xs:schema xmlns:xs =
"">
<xs:element name = "MonHoc" type =
"KMonHoc"/>
<xs:element name = "STT" type =
"xs:integer"/>
<xs:element name = "TenMon" type =
"xs:string"/>
<xs:element name = "DiemKy1" type =
"KDiem"/>
<xs:element name = "DiemKy2" type =
"KDiem"/>
<xs:element name = "DiemTB" type =
"KDiem"/>
Bài tập 4
•Một tài liệu XML được dùng để biểu diễn kết quả học
tập của nhiều sinh viên. Mỗi sinh viên được mô tả bởi:
• Thông tin cá nhân sinh viên: bao gồm các thông tin về
Mã số sinh viên, Họ tên, Ngày sinh, Lớp, Trạng thái
học tập
• Bảng điểm sinh viên: bao gồm các thông tin về kết
quả học tập của từng học phần. Mỗi học phần có
thông tin về Học kỳ, Mã học phần, Tên học phần, Tín
chỉ, Mã lớp học, Điểm Quá trình, Điểm Thi, Điểm chữ
•Hãy viết tài liệu DTD (Document Type Definition) để
đặc tả tài liệu XML trên.
Bài tập 4 - DTD
•
• <!DOCTYPE results[
•
• <!ELEMENT student(info,
transcript)>
• <!ELEMENT info(id, name,
dateofbirth, class, status)>
•
• <!ELEMENT course(term, course_id,
course_name, credit, class_id,
result_middle_term, result_final_term,
result)>
•
•
<!ELEMENT result_middle_term
(#PCDATA)>
<!ELEMENT
result_final_term(#PCDATA)>
]>
IT4409: Web
Technologies and
e-Services
Lec 11: AJAX
1
Objectives
❖ ...
2
Outline
1. ...
▪ ...
2. ...
3
Characteristics of Conventional Web
Application
❖ “Click, wait, and refresh” user interaction
Page refreshes from the server needed for all events, data
submissions, and navigation
The user must wait for the response
❖ Synchronous “request/response” communication
model
❖ Browser always initiates the request
4
Issues of Conventional Web Application
❖ Slow response
❖ Loss of operation context during refresh
❖ Excessive server load and bandwidth consumption
❖ Lack of two-way, real-time communication
capability for server-initiated updates
🡺 These are the reasons why Rich Internet
Application (RIA) technologies were born.
5
Web 2.0 Applications
6
Web 2.0 Definition
7
Web 2.0 is the network as platform, spanning all connected
devices; Web 2.0 applications are those that make the most of
the intrinsic advantages of that platform: delivering software as a
continually-updated service that gets better the more people
use it, consuming and remixing data from multiple sources,
including individual users, while providing their own data and
services in a form that allows remixing by others, creating
network effects through an "architecture of participation," and
going beyond the page metaphor of Web 1.0 to deliver
rich user experiences.
Tim O'Reilly, “Web 2.0: Compact Definition?”
What Makes the Web 2.0 Different?
❖ Personalized
❖ User oriented
❖ Easy to Use
❖ Get you to the information you want
❖ Useful
❖ You can add more...
8
Rich Internet Application (RIA)
Technologies
❖ Macromedia Flash
❖ Java Web Start
❖ Dynamic HTML (JavaScript + DOM + CSS)
❖ DHTML: No asynchronous communication
🡺 full page refresh still required
❖ AJAX
9
Browser wars
10
❖ https://en.wikipedia.org/wiki/Browser_wars
❖ competition for dominance in the usage share of
web browsers.
❖ The “First Browser War” during the late 1990s
pitted Microsoft's Internet
Explorer against Netscape's Navigator.
❖ Browser wars continued with the decline of
Internet Explorer's market share and the
popularity of other browsers
including Firefox, Google Chrome, Safari,
and Opera.
🡺 Diversity in Web application script languages
Browser wars: market data
11
History of Ajax
• 199x: Techniques for the asynchronous loading of content is
introduced with Java applets
• 1996, Internet Explorer introduced the IFrame element to
HTML, which also enables this to be achieved.
• 1999, Microsoft created the XMLHTTP ActiveX control in
Internet Explorer 5 using the native XMLHttpRequest object.
• However, this feature only became widely known after being
used by Gmail (2004) and Google Maps (2005).
• The term "Ajax" itself was coined in 2005
AJAX Introduction
❖ AJAX = Asynchronous JavaScript and XML
❖ AJAX is not a new programming language, but a technique
for creating better, faster, and more interactive web
applications.
❖ With AJAX, your JavaScript can communicate directly with
the server, using the JavaScript XMLHttpRequest object.
With this object, your JavaScript can trade data with a web
server, without reloading the page.
❖ AJAX uses asynchronous data transfer (HTTP requests)
between the browser and the web server, allowing web
pages to request small bits of information from the server
instead of whole pages.
❖ The AJAX technique makes Web applications smaller,
faster and more user-friendly.
13
About AJAX
❖ AJAX is based on the following web standards:
▪ JavaScript
▪ XML
▪ HTML
▪ CSS
▪ DOM
❖ The web standards used in AJAX are well defined
now and supported by all major browsers. AJAX
applications are browser and platform
independent.
14
DOM
• The Document Object Model (DOM)
– platform- and language-independent
– standard object model for representing HTML or XML documents
• DOM provides an API for querying, traversing and manipulating such
documents
• It defines the logical structure of documents and the way a document is
accessed and manipulated.
– programmers can build documents, navigate their structure, and add,
modify, or delete elements and content of HTML and XML
– DOM uses objects to model elements of documents.
• XML presents data as documents, and the DOM may be used to
manage this data.
• DOM is a model and is implemented in different language: Javascript,
VBscript, Java
15
DOM (cont.)
Shady Grove
Aeolian
Over the River, Charlie
Dorian
DOM representation
AJAX Architecture
17
❖ Ajax application eliminates the start-stop-start-stop nature
of interaction on the Web by introducing an intermediary -
an Ajax engine - between the user and the server
❖ Instead of loading
a webpage, at the
start of the session,
the browser loads
an Ajax engine.
❖ AJAX engine is
responsible for both
rendering the
interface the
user sees and
communicating with
the server on the
user’s behalf.
AJAX Asynchronous Communication
18
❖ The Ajax engine allows the user’s interaction with the application to
happen asynchronously - independent of communication with the
server.
❖ Every user action that
normally would
generate an HTTP
request takes the
form of a JavaScript
call to the
Ajax engine instead.
❖ If the engine needs
something from
the server in order
to respond to the
browser, the engine
makes those requests
asynchronously using
java script XMLHttpRequest.
AJAX tutorial by samples
19
IT4409: Web
Technologies and
e-Services
Lec 14: Web Security
1
Outline
1. What is web security?
2. HTTPS
3. Session Management
4. Authentication
5. Common Web Attacks
2
What is web security?
❖ Website security is the act/practice of protecting
websites from unauthorized access, use,
modification, destruction, or disruption. (Mozilla)
❖ Effective website security requires design effort
across the whole of the website:
▪ Web application
▪ Configuration of the web server
▪ Policies for creating and renewing passwords
▪ Client-side code.
3
Facts and Stats
❖ 95% of breached records came from only three
industries in 2016
❖ There is a hacker attack every 39 seconds
❖ 43% of cyber attacks target small business
❖ The average cost of a data breach in 2020 will
exceed $150 million
❖ In 2018 hackers stole half a billion personal
records
❖ Over 75% of healthcare industry has been infected
with malware over 2018
❖ Large-scale DDoS attacks increase in size by 500%
4
Facts and Stats
❖ Approximately $6 trillion is expected to be spent
globally on cybersecurity by 2021
❖ By 2020 there will be roughly 200 billion connected
devices
❖ Unfilled cybersecurity jobs worldwide will reach 3.5
million by 2021
❖ 95% of cybersecurity breaches are due to human error
❖ More than 77% of organizations do not have a Cyber
Security Incident Response plan
❖ Most companies take nearly 6 months to detect a data
breach, even major ones
❖ Share prices fall 7.27% on average after a breach
❖ Total cost for cybercrime committed globally has
added up to over $1 trillion dollars in 2018
5
Outline
1. What is web security?
2. HTTPS
3. Session Management
4. Authentication
5. Common Web Attacks
6
HTTPS
❖ Hypertext transfer protocol secure (HTTPS) is the
secure version of HTTP, which is the primary
protocol used to send data between a web browser
and a website.
7
• HTTPS is encrypted in order to
increase security of data
transfer.
• This is particularly important
when users transmit sensitive
data, such as by logging into a
bank account, email service, or
health insurance provider.
HTTPS
❖ HTTPS uses an encryption protocol to encrypt
communications.
❖ The protocol is called Transport Layer Security (TLS),
although formerly it was known as Secure Sockets
Layer (SSL).
▪ The private key - this key is controlled by the owner of a website
and it’s kept, as the reader may have speculated, private. This key
lives on a web server and is used to decrypt information
encrypted by the public key.
▪ The public key - this key is available to everyone who wants to
interact with the server in a way that’s secure. Information that’s
encrypted by the public key can only be decrypted by the private
key.
8
Outline
1. What is web security?
2. HTTPS
3. Session Management
4. Authentication
5. Common Web Attacks
9
Session Management
❖ A web session is a sequence of network HTTP
request and response transactions associated to
the same user.
❖ Modern and complex web applications require the
retaining of information or status about each user
for the duration of multiple requests.
❖ Therefore, sessions provide the ability to establish
variables – such as access rights and localization
settings – which will apply to each and every
interaction a user has with the web application for
the duration of the session.
10
Session Management
❖ Web applications can create sessions to keep track
of anonymous users after the very first user
request.
11
Session Management
❖ The disclosure, capture, prediction, brute force, or
fixation of the session ID will lead to session
hijacking (or sidejacking) attacks.
❖ An attacker is able to fully impersonate a victim
user in the web application.
❖ Attackers can perform two types of session
hijacking attacks, targeted or generic.
12
Outline
1. What is web security?
2. HTTPS
3. Session Management
4. Authentication
5. Common Web Attacks
13
Major security issues
❖ Prevent unauthorized users from accessing
sensitive data
▪ Authentication: identifying users to determine if they are
one of the authorized ones
▪ Access control: identifying which resources need protection
and who should have access to them
❖ Prevent attackers from stealing data from network
during transmission
▪ Encryption (usually by Secure Sockets Layer)
14
Authentication
❖ Collect user ID information from end users (“logging
in”)
▪ usually by means of browser dialog / interface
▪ user ID information normally refers to username and password
❖ Transport collected user ID information to the web
server
▪ unsecurely (HTTP) or securely (HTTPS = HTTP over SSL)
❖ Verify ID and passwd with backend Realms (“security
database”)
▪ Realms maintain username, password, roles, etc., and can be
organized by means of LDAP, RDBMS, Flat-file, etc.
▪ Validation: the web server checks if the collected user ID &
passwd match with these in the realms.
❖ Keep track of previously authenticated users for
further HTTP operations
15
WWW-Authenticate
❖ The authentication request received by the browser will
look something like:
▪ WWW-Authenticate = Basic realm=“defaultRealm”
• Basic indicates the HTTP Basic authentication is requested
• realm indicates the context of the login
• realms hold all of the parts of security puzzle
• Users
• Groups
• ACLs (Access Control Lists)
❖ Basic Authentication
▪ userid and password are sent base 64 encoded (might as well be
plain text)
▪ hacker doesn’t even need to unencode all he has to do is “replay”
the blob of information he stole over and over ( this is called a
“replay attack”)
16
WWW-Authenticate
❖ Digest Authentication
▪ attempts to overcome the shortcomings of Basic Authentication
▪ WWW-Authenticate = Digest realm=“defaultRealm”
nonce=“Server SpecificString”
▪ see RFC 2069 for description of nonce, each nonce is different
▪ the nonce is used in the browser in a 1-way function (MD5,
SHA-1.) to encode the userid and password for the server, this
function essentially makes the password good for only one time
❖ Common browsers don’t use Digest Authentication but an
applet could as an applet has access to all of the Java
Encryption classes needed to create the creation of a
Digest.
17
Outline
1. What is web security?
2. HTTPS
3. Session Management
4. Authentication
5. Common Web Attacks
18
Common Web Attacks
❖ XSS
❖ CSRF
19
• SQLi
• Brute-force
• File upload
• Command injection
Client side Server side
Cross-Site Scripting - XSS
❖ Cross-site scripting (XSS) is a security exploit which
allows an attacker to inject into a website malicious
client-side code.
❖ This code is executed by the victims and lets the
attackers bypass access controls and impersonate users.
❖ XSS was the seventh most common Web
app vulnerability in 2017 - OWASP
20
Cross-Site Scripting - XSS
21
Cross-Site Scripting - XSS
❖ There are three main types of XSS attacks. These
are:
❖ Reflected XSS, where the malicious script comes
from the current HTTP request.
❖ Stored XSS, where the malicious script comes from
the website's database.
❖ DOM-based XSS, where the vulnerability exists in
client-side code rather than server-side code.
22
Cross-Site Scripting - XSS
How to prevent XSS attacks
❖ Filter input on arrival
❖ Encode data on output
❖ Use appropriate response headers
❖ Content Security Policy
23
Cross-Site Scripting - XSS
24
Cross-Site Request Forgery - CSRF
❖ Cross-Site Request Forgery (CSRF) is an attack that
forces an end user to execute unwanted actions
on a web application in which they’re currently
authenticated.
25
Cross-Site Request Forgery - CSRF
❖ Preventing CSRF attacks:
▪ Include a CSRF token within relevant requests
❖ The token should be:
▪ Unpredictable with high entropy, as for session tokens in
general.
▪ Tied to the user's session.
▪ Strictly validated in every case before the relevant action is
executed.
26
SQL Injection
❖ A SQL injection attack consists of insertion or
“injection” of a SQL query via the input data from
the client to the application.
❖ SQL injection vulnerabilities enable malicious
users to execute arbitrary SQL code on a database,
allowing data to be accessed, modified, or deleted
irrespective of the user's permissions.
27
SQL Injection
28
SQL Injection
29
SQL Injection
❖ How to prevent: Using parameterized queries (also
known as prepared statements) instead of string
concatenation within the query.
❖ Before:
▪ String query = "SELECT * FROM products WHERE category = '"+
input + "'";
▪ Statement statement = connection.createStatement();
▪ ResultSet resultSet = statement.executeQuery(query);
❖ After:
▪ PreparedStatement statement =
connection.prepareStatement("SELECT * FROM products WHERE
category = ?");
▪ statement.setString(1, input);
▪ ResultSet resultSet = statement.executeQuery();
30
SQL Injection
31
Brute force
❖ A brute force attack, also known as an exhaustive
search, is a cryptographic hack that relies on guessing
possible combinations of a targeted password until the
correct password is discovered.
▪ Combination of letters and numbers
▪ Use a dictionary
❖ Prevent password cracking:
▪ Long and complex password
▪ Account lock out
32
Brute force
33
File upload
❖ Uploaded files represent a significant risk to
applications.
❖ The first step in many attacks is to get some code
to the system to be attacked.
❖ Then the attack only needs to find a way to get the
code executed.
34
File upload
❖ Prevention Methods:
▪ The file types allowed to be uploaded should be restricted to
only those that are necessary for business functionality.
▪ Never accept a filename and its extension directly without having
a whitelist filter.
▪ The application should perform filtering and content checking on
any files which are uploaded to the server.
▪ It is necessary to have a list of only permitted extensions on the
web application.
▪ All the control characters and Unicode ones should be removed
from the filenames and their extensions without any exception.
▪ Limit the filename length.
▪ Uploaded directory should not have any “execute” permission
and all the script handlers should be removed from these
directories.
▪ Limit the file size to a maximum value in order to prevent denial
of service attacks.
▪ The minimum size of files should be considered.
▪ Use Cross Site Request Forgery protection methods.
35
File upload
36
Command Injection
❖ Command injection is an attack in which the goal
is execution of arbitrary commands on the host
operating system via a vulnerable application.
37
Command Injection
❖ How to prevent:
▪ Validating against a whitelist of permitted values.
▪ Validating that the input is a number.
▪ Validating that the input contains only alphanumeric
characters, no other syntax or whitespace.
38
Command Injection
39
Thank you
for your
attentions!
40