Tải bản đầy đủ (.pdf) (73 trang)

Các hình thức tấn công và giải pháp phòng chống tấn công ứng dụng web

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.54 MB, 73 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO
VIỆN ĐẠI HỌC MỞ HÀ NỘI

----------------------

LUẬN VĂN THẠC SỸ
CHUYÊN NGÀNH: CÔNG NGHỆ THÔNG TIN

CÁC HÌNH THỨC TẤN CÔNG VÀ GIẢI PHÁP
PHÒNG CHỐNG TẤN CÔNG ỨNG DỤNG WEB

NGUYỄN TRUNG KIÊN

HÀ NỘI – 2016


BỘ GIÁO DỤC VÀ ĐÀO TẠO
VIỆN ĐẠI HỌC MỞ HÀ NỘI

----------------------

LUẬN VĂN THẠC SỸ

CÁC HÌNH THỨC TẤN CÔNG VÀ GIẢI PHÁP
PHÒNG CHỐNG TẤN CÔNG ỨNG DỤNG WEB

NGUYỄN TRUNG KIÊN
CHUYÊN NGÀNH : CÔNG NGHỆ THÔNG TIN
MÃ SỐ: 60.48.02.018

NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS.TS ĐOÀN VĂN BAN



HÀ NỘI – 2016


LỜI CAM ĐOAN
Tác giả xin cam đoan rằng:
Số liệu và kết quả nghiên cứu trong luận văn này là hoàn toàn trung thực và
chưa từng được sử dụng hoặc công bố trong bất kỳ công trình nào khác.
Mọi sự giúp đỡ cho việc thực hiện luận văn này đã được cám ơn và các
thông tin trích dẫn trong luận văn đều được ghi rõ nguồn gốc.

Tác giả luận văn

i


LỜI CẢM ƠN
Tác giả xin chân thành cảm ơn các thầy cô đã tận tình hướng dẫn, giảng dạy
trong suốt quá trình học tập, nghiên cứu và rèn luyện ở Viện Đại học Mở Hà Nội.
Xin chân thành cám ơn thầy giáo hướng dẫn PGS. TS. Đoàn Văn Ban đã
giành nhiều thời gian tâm huyết, trực tiếp hướng dẫn tận tình, chỉ bảo và tạo điều
kiện thuận lợi cho tôi trong suốt quá trình thực hiện nghiên cứu đề tài và hoàn chỉnh
luận văn thạc sĩ chuyên ngành công nghệ thông tin.
Cuối cùng, tác giả xin chân thành cảm ơn gia đình và bạn bè đã động viên,
khích lệ, sẻ chia, giúp đỡ và đồng hành trong cuộc sống cũng như trong quá trình
học tập, nghiên cứu.
Hà Nội, ngày … tháng … năm 2016
Tác giả luận văn

ii



MỤC LỤC
DANH MỤC CÁC KÝ HIỆU, CÁC TỪ VIẾT TẮT .......................................... vi
DANH MỤC CÁC BẢNG ..................................................................................viii
DANH MỤC HÌNH VẼ, BIỀU ĐỒ...................................................................... ix
LỜI MỞ ĐẦU ........................................................................................................ 1
CHƯƠNG 1. CÁC DỊCH VỤ WEB VÀ NGUY CƠ BỊ TẤN CÔNG ................. 3
1.1

Các khái niệm trong ứng dụng web................................................. 3

1.1.1

Công nghệ Web 2.0 ............................................................................ 4

1.1.2

Ngôn ngữ lập trình ............................................................................. 4

1.1.3

Hosting và tên miền............................................................................ 8

1.1.4

Cơ sở dữ liệu ...................................................................................... 9

1.1.5


Phiên làm việc .................................................................................... 9

1.1.6

Web service...................................................................................... 11

1.2

Tình hình an ninh mạng trong nước và trên thế giới ................... 17

1.3

Nguy cơ bị tấn công của ứng dụng web ......................................... 19

1.4

Kết luận........................................................................................... 20

CHƯƠNG 2. KỸ THUẬT TẤN CÔNG VÀ BIỆN PHÁP PHÒNG TRÁNH... 21
2.1

Tấn công từ chối dịch vụ ................................................................ 21

2.1.1

Khái niệm......................................................................................... 21

2.1.2

Cách thức tấn công ........................................................................... 22


2.1.3

Các dạng tấn công ............................................................................ 22

2.1.4

Khó khăn trong việc phòng chống .................................................... 24

2.1.5

Biện pháp phòng chống .................................................................... 25

2.2

Tấn công SQL Injection ................................................................. 28

2.2.1

Khái niệm......................................................................................... 28

2.2.2

Cách thức tấn công ........................................................................... 28

2.2.3

Các dạng tấn công ............................................................................ 30

iii



2.2.4
2.3

Biện pháp phòng tránh ..................................................................... 31
Tấn công XSS ................................................................................. 31

2.3.1

Khái niệm......................................................................................... 31

2.3.2

Cách thức tấn công ........................................................................... 32

2.3.3

Các dạng tấn công ............................................................................ 33

2.3.4

Biện pháp phòng chống .................................................................... 34

2.4

Cross-site Request Forgery (CSRF) .............................................. 35

2.4.1


Khái niệm......................................................................................... 35

2.4.2

Cách thức tấn công ........................................................................... 36

2.4.3

Các dạng tấn công ............................................................................ 36

2.4.4

Biện pháp phòng chống .................................................................... 36

2.5

Một số hình thức tấn công khác..................................................... 37

2.5.1

Lỗi Heartbleed.................................................................................. 37

2.5.2

Khai thác qua Phishing ..................................................................... 37

2.5.3

Tấn công bằng phần mềm độc hại .................................................... 38


2.6

Một số công cụ tấn công ................................................................. 40

2.6.1

Maxisploit Scanner ........................................................................... 40

2.6.2

Paros Proxy ...................................................................................... 42

2.6.3

Havij ................................................................................................ 42

2.6.4

Sqlmap ............................................................................................. 43

2.7

Kết luận........................................................................................... 45

CHƯƠNG 3. THỰC NGHIỆM PHÒNG CHỐNG TẤN CÔNG WEBSITE SỬ
DỤNG KỸ THUẬT SQL INJECTION ..................................................... 46
3.1

Đặt bài toán .................................................................................... 46


3.1.1

Mô tả bài toán tấn công và phòng thủ ............................................... 46

3.1.2

Tìm hiểu website .............................................................................. 47

3.2
3.2.1

Tấn công ứng dụng web ................................................................. 51
Chọn website tấn công ..................................................................... 51
iv


3.2.2

Xác định số cột trong bảng ............................................................... 51

3.2.3

Xem tên và phiên bản cơ sở dữ liệu .................................................. 52

3.2.4

Xem danh sách bảng ........................................................................ 52

3.2.5


Xem trường dữ liệu .......................................................................... 53

3.2.6

Xem dữ liệu trong bảng .................................................................... 54

3.3

Kết quả thực nghiệm ...................................................................... 57

3.4

Giải pháp phòng chống tấn công ................................................... 57

3.5

Kết luận........................................................................................... 58

KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN .......................................................... 59
TÀI LIỆU THAM KHẢO ................................................................................... 61

v


DANH MỤC CÁC KÝ HIỆU, CÁC TỪ VIẾT TẮT
Viết tắt Tiếng Anh

Tiếng Việt

National Vulnerability


Cơ sở dữ liệu về lỗ hổng bảo mật

Database

quốc gia

OOP

Object Oriented Programming

Lập trình hướng đối tượng

Php

Hypertext Preprocessor

Ngôn ngữ lập trình PHP

FTP

File Tranfer Protocol

Giao thức truyền tải file

HTTP

HyperText Transfer Protocol

Giao thức truyển tải siêu văn bản


XML

Extensible Markup Language

Ngôn ngữ đánh dấu mở rộng

HTML

HyperText Markup Language

Ngôn ngữ đánh dấu siêu văn bản

SMTP

Simple Mail Transfer Protocol

Giao thức truyền tải thư đơn giản

SOAP

Simple Object Access Protocol Giao thức truy cập đối tượng đơn giản

NVD

WSDL
UDDI
SGML
API


Web Service Description

Ngôn ngữ mô tả Web service

Language
Universal Description,

Quy tắc đăng ký, tìm kiếm thông tin

Discovery and Integration

Web service

Standard Generalized Markup

Ngôn ngữ đánh dấu tổng quát hóa

Language

chuẩn

Application Programming

Giao diện lập trình ứng dụng

Interface

JMS

Java Message Services


Gửi và nhận tin giữa client-server

SSL

Secure Sockets Layer

Tầng đệm bảo mật

Hypertext Transfer Protocol

Giao thức truyền tải siêu văn bản kèm

Secure

bảo mật

PKI

Public Key Infrastructure

Hạ tầng cơ sở khóa công khai

DDoS

Distributed Denial of Service

Tấn công từ chối dịch vụ phân tán

XSS


Cross Site Scripting

Tấn công chèn mã độc

DNS

Domain Name System

Hệ thống tên miền

HTTPS

vi


POP3

Post Office Protocol version 3

Giao thức lấy thư điện tử

RAM

Random Access Memory

CPU

Central Processing Unit


Bộ xử lý trung tâm

CSDL

Database

Cơ sở dữ liệu

DOM

Document Object Model

Mô hình đối tượng tài liệu

CSRF

Cross Site Request Forgery

VPN

Virtual Private Network

Bộ nhớ truy cập ngẫu nhiên trên máy
tính

Kỹ thuật tấn công dựa vào tài khoản
xác thực
Mạng riêng ảo

vii



DANH MỤC CÁC BẢNG
Bảng 3.1 Thống kê dữ liệu trong bảng danh mục sản phẩm ................................... 55
Bảng 3.2. Thống kê dữ liệu trong bảng sản phẩm .................................................. 55
Bảng 3.3. Thống kê dữ liệu trong bảng đặt mua của khách hàng............................ 56

viii


DANH MỤC HÌNH VẼ, BIỀU ĐỒ
Hình 1.1. Mô hình cấu trúc ứng dụng website.......................................................... 3
Hình 1.2. Các thành phần của Web service ............................................................ 13
Hình 2.1. Mô hình tấn công DDoS cơ bản ............................................................. 21
Hình 2.2. Mô hình tấn công DDoS ........................................................................ 23
Hình 2.3 Mô hình Firewall .................................................................................... 26
Hình 2.4 Màn hình đăng nhập trên một số website ngân hàng có Internet Banking 27
Hình 2.5. Mô hình tấn công Sql Injection .............................................................. 28
Hình 2.6. Cấu trúc tấn công Cross-Site Scripting ................................................... 32
Hình 2.7. Mô hình tấn công Cross-site Request Forgery ........................................ 35
Hình 2.8. Giao diện chính của MAXISPLOIT SCANNER .................................... 41
Hình 2.9 Giao diện chính của Havij ....................................................................... 42
Hình 2.10. Giao diện chính của SQLMAP ............................................................. 45
Hình 3.1 Giao diện website doanh nghiệp Flaptop ................................................. 47
Hình 3.2. Giao diện danh mục sản phẩm của website ............................................ 48
Hình 3.3. Giao diện chức năng giỏ hàng ................................................................ 49
Hình 3.4. Giao diện chức năng thanh toán đơn hàng .............................................. 50
Hình 3.5 Đường dẫn kiểm tra lỗi SQL injection .................................................... 51
Hình 3.6 Lỗi kiểm tra SQL injection...................................................................... 51
Hình 3.7 Đường dẫn xác định số cột trong bảng .................................................... 51

Hình 3.8 Thông báo cột bị lỗi ................................................................................ 52
Hình 3.9 Đường dẫn xác định tên cơ sở dữ liệu ..................................................... 52
Hình 3.10 Tên cơ sở dữ liệu đã lấy được ............................................................... 52
Hình 3.11 Danh sách các bảng trong cơ sở dữ liệu................................................. 53
Hình 3.12 Công cụ online chuyển text sang hex .................................................... 54
Hình 3.13 Danh sách cột trong bảng datab_category ............................................. 54
Hình 3.14 Hiển thị dữ liệu trong bảng datab_category ........................................... 55

ix


LỜI MỞ ĐẦU
Ngày nay, website đã trở nên phổ biến trong mọi mặt hoạt động đời sống xã
hội thông tin, đặc biệt trong các hoạt động thương mại điện tử. Website được sử
dụng như một công cụ để quảng cáo, lưu trữ, giao dịch các thông tin quan trọng của
con người. Một số thông tin quan trọng được giữ bí mật trên website có độ an toàn
kém. Do đó, website luôn trở thành mục tiêu tấn công của tin tặc. Các tin tặc tìm
mọi cách lợi dụng các lỗ hổng bảo mật trên website nhằm phá hoại, chiếm đoạt tài
nguyên, dữ liệu. Điều này ngày càng trở thành vấn đề đáng lo ngại. Sự quan tâm và
đầu tư thích đáng của các đơn vị chủ sở hữu website đến an toàn hệ thống là rất cần
thiết. Chủ động phòng và chống các vụ tấn công đem lại nhiều lợi ích cho các đơn
vị để bảo vệ nội dung dữ liệu của đơn vị tránh được nguy cơ bị mất và các gian lận
thương mại xảy ra.
Việc đi sâu tìm hiểu về các dạng tấn công vào các website sẽ giúp cho chúng
ta hiểu hơn về những lỗ hổng trong công tác quản lý website. Dựa trên cơ sở đó,
những giải pháp giúp các nhà quản lý có biện pháp khắc phục, ngăn chặn sự thâm
nhập từ bên ngoài và bên trong. Đồng thời, việc tìm hiểu cũng nhấn mạnh vai trò
quan trọng trong việc triển khai ứng dụng những công nghệ mới an toàn và bảo mật
hơn. Chính vì vậy, tác giả đã chọn đề tài “Các hình thức tấn công và giải pháp
phòng chống tấn công ứng dụng web” làm đề tài luận văn của mình.

Luận văn được trình bày theo cấu trúc thành: phần mở đầu, các chương nội
dung chính (3 chương) và phần kết luận.
Chương 1. Trình bày tổng quan về tình hình an ninh bảo mật trong và ngoài
nước, những khái niệm cơ bản về ứng dụng web, các thành phần có liên quan trong
môi trường web và nêu ra một số vấn đề bảo mật đối việc bảo vệ website trước
nguy cơ tấn công của tin tặc.
Chương 2. Trình bày chi tiết các lỗ hổng bảo mật đang tồn tại trên website từ
mức khái niệm, dạng tấn công và cách thức tấn và từ đó đưa ra những phương pháp
phòng chống phù hợp.

1


Chương 3. Trình bày về thực nghiệm tấn công website bằng kỹ thuật SQL
Injection. Phân tích và đánh giá một số kết quả trong việc phát hiện và phòng chống
các lỗ hổng bảo mật ứng dụng web.
Phần cuối là kết luận và hướng phát triển cho luận văn.

2


CHƯƠNG 1. CÁC DỊCH VỤ WEB VÀ NGUY CƠ BỊ TẤN
CÔNG
1.1 Các khái niệm trong ứng dụng web
Ứng dụng web là một chương trình chạy trên nền tảng web, thường được cài
đặt trên máy chủ của một Web Server trên mạng. Người dùng kết nối vào mạng
và sử dụng ứng dụng thông qua một trình duyệt. Ứng dụng web có ưu điểm là truy
cập dễ dàng, tiện lợi và không cần cài đặt trên máy cá nhân. Giao diện của ứng dụng
web có thể tùy biến linh hoạt, đẹp và phong phú giúp người sử dụng có thể dễ dàng
thao tác.


Web
server

Tầng hiển thị

Tầng logic

Tầng cơ sở dữ liệu
Hình 0.1. Mô hình cấu trúc ứng dụng website

Cấu trúc một ứng dụng web thường có ba tầng gồm: Tầng trình bày, tầng
logic và tầng cơ sở dữ liệu. Tầng trình bày có nhiệm vụ hiển thị dữ liệu người dùng
theo bố cục trang web thông qua trình duyệt web. Tầng logic xử lý thông tin yêu
cầu từ phía người dùng, có thể lấy thông tin từ cơ sở dữ liệu và trả về tầng hiển thị
cho người dùng, như vậy tầng logic được xem như cầu nối. Tầng cơ sở dữ liệu là
nơi lưu trữ thông tin, quản lý file và phân quyền truy cập. Các hệ quản trị cơ sở dữ
liệu như My SQL, Sql Server, Postgre SQL, Mongodb, …
3


1.1.1 Công nghệ Web 2.0
Chúng ta đang được sống trong thời đại Web 2.0, thời đại các ứng dụng web
có thể tương tác hay cộng tác với người dùng. Công nghệ Web 2.0 đã được giới
thiệu từ những năm 1999 bởi Darcy DiNucci nhưng phải đến năm 2004, công nghệ
này mới được phổ biến. Công nghệ Web 2.0 không đưa ra nhiều cập nhật hoặc tính
năng kỹ thuật mới. Tuy nhiên, công nghệ này có ảnh hưởng tới cách thiết kế và trải
nghiệm người dùng trong ứng dụng web.
Trước đây, công nghệ Web 1.0 được đưa ra bởi Tim Berners-Lee vào khoảng
năm 1989, nó bao gồm phần lớn là web tĩnh, các trang web được phát triển với số

lượng ít. Web 1.0 chỉ là một cổng thông tin, người truy cập thụ động tiếp nhận
thông tin, không có khả năng tương tác. Chúng ta có thể hiểu đơn giản hơn là với
Web 1.0 thì người sử dụng chỉ có thể đọc và xem.
Xu hướng Web 2.0 đang diễn ra mạnh mẽ và là một điều tất yếu. Các ứng
dụng Web 2.0 có thể kể đến mạng xã hội, nhật ký web, ứng dụng doanh nghiệp, …
Các ứng dụng này mang đến cho người dùng sự giao tiếp, tương tác với trang web,
với người dùng khác. Ví dụ, Facebook là một ví dụ phổ biến trong số các mạng xã
hội với khoảng 1.65 tỷ người dùng hàng tháng. Ở Việt Nam, khoảng 1/3 dân số sử
dụng khoản Facebook. Mạng xã hội Facebook mạng lại cho người dùng nhiều
những tính năng tương tác như đọc báo, nhắn tin, gọi điện, … kết nối con người gần
nhau hơn.

1.1.2 Ngôn ngữ lập trình
Ngôn ngữ lập trình là một dạng ngôn ngữ chuẩn hóa dùng để biểu diễn các
thuật toán trên máy tính. Ngôn ngữ này có đặc điểm là dễ hiểu và dễ sử dụng cho
người lập trình. Bên cạnh đó, nó phải miêu tả đầy đủ các tiến trình hoạt động để
chạy trên các máy tính. Ngôn ngữ lập trình được chia làm 3 loại:
Ngôn ngữ máy: Các lệnh yêu cầu máy tính thực hiện được mã hóa bằng
các kí hiệu 0 và 1. Chương trình được viết trên ngôn ngữ máy có thể
được nạp vào bộ nhớ và thực hiện ngay.

4


Hợp ngữ: Sử dụng các từ viết tắt để diễn tả câu lệnh. Các từ này sử dụng
ngôn ngữ tự nhiên là tiếng Anh.
Ngôn ngữ bậc cao: Các lệnh được mã hóa bằng một ngôn ngữ gần với
ngôn ngữ tự nhiên. Các chương trình viết bằng ngôn ngữ bậc cao phải sử
dụng trình dịch để chuyển đổi thành chương trình trên ngôn ngữ máy.
Chương trình dịch có thể là biên dịch hoặc thông dịch. Trình thông

dịch sẽ dịch từng câu lệnh theo yêu cầu thực thi và chương trình đích vừa
tạo ra sẽ không được lưu lại. Trong khi đó, trình biên dịch sẽ dịch toàn bộ
chương trình, cho ra chương trình đích được lưu lại trong máy tính rồi
mới thực hiện chương trình. Lập trình bằng ngôn ngữ bậc cao dễ viết hơn
vì các lệnh được mã hóa gần với ngôn ngữ tự nhiên.
Mỗi ngôn ngữ lập trình có những đặc điểm về dữ liệu, cấu trúc dữ liệu, câu
lệnh, dòng điều khiển, tên, các tham số, các cơ chế tham khảo và sự tái sử dụng, ...
Trong lịch sử của ngôn ngữ lập trình, các phương pháp tiếp cận lập trình cũng rất đa
dạng. Các phương pháp có thể kể tới như :
Lập trình tuyến tính: Chương trình thực hiện tuần tự các câu lệnh từ đầu
đến cuối. Ưu điểm của phương pháp này là đơn giản và dễ sử dụng, chỉ
sử dụng cho các chương trình đơn giản. Nhược điểm của lập trình tuyến
tính là không thể sử dụng cho các bài toán phức tạp.
Lập trình cấu trúc: Chương trình được chia thành các chương trình con,
mỗi chương trình con thực hiện 1 công việc xác định. Mỗi chương trình
con có thể được thực hiện lặp đi lặp lại. Một vấn đề của phương pháp này
là phải kết hợp chặt chẽ giữa cấu trúc dữ liệu và giải thuật. Tư duy của
phương pháp này chỉ phù hợp với những bài toán nhỏ. Khi áp dụng với
bài toán lớn và phức tạp, các module trong chương trình tỏ ra không hiệu
quả.
Lập trình hướng đối tượng: Là một phương pháp để thiết kế một chương
trình bởi sử dụng các lớp và các đối tượng. Dữ liệu được đóng gói cho
các lớp đối tượng. Các dữ liệu này được truy cập thông qua những
phương thức của đối tượng. Các lớp, đối tượng có thể kế thừa thuộc tính
5


và phương thức của các lớp, đối tượng khác nên có thể sử dụng lại mã
nguồn. Phương pháp lập trình này phù lớp với những bài toán lớn và
phức tạp.

Một ứng dụng web thường được xây dựng bằng các ngôn ngữ chạy phía
Web server như Php, Java, C#… Mỗi ngôn ngữ có những đặc điểm và cấu hình môi
trường hoạt động khác nhau.
Java là ngôn ngữ lập trình hướng đối tượng được phát triển bởi James
Gosling năm 1991. Ban đầu, Java có tên gọi là Oak có nghĩa là cây sồi vì quanh nơi
làm việc của ông có rất nhiều loại cây này. Năm 1995 Oak được đổi tên thành Java
và được tạp chí Times bình chọn là một trong mười sản phẩm tốt nhất. Java được sử
dụng để làm các ứng dụng cá nhân, ứng dụng web, ứng dụng cho doanh nghiệp và
ứng dụng điện thoại. Một chương trình Java được biên dịch thành bytecode, sau đó
sẽ chạy trên môi trường thực thi. Java là sự lựa chọn của nhiều lập trình viên vì một
chương trình Java có thể chạy trên mọi nền tảng đúng với tiêu chí “write one, run
anywhere” viết một lần, chạy nhiều nơi.
Java có rất nhiều đặc điểm và tính năng nổi bật so với các ngôn ngữ khác.
Đơn giản: Cú pháp của Java dựa trên ngôn nghữ C++, đã được loại bỏ
một số tính năng ít sử dụng như con trỏ tường minh, nạp chồng toán tử,
… và hỗ trợ dọn rác tự động.
Hướng đối tượng: Lập trình hướng đối tượng (OOP) là một phương
pháp làm đơn giản hóa việc phát triển và duy trì phần mềm bằng việc
cung cấp một số quy tắc. Một số khái niệm cơ bản của hướng đối tượng
là: Đối tượng, lớp, tính kế thừa, tính đa hình, tính trừu tượng, tính bao
đóng.
Độc lập nền tảng: Một nền tảng là môi trường phần cứng hoặc phần
mềm chương trình chạy. Có hai loại nền tảng chủ yếu: Dựa trên phần
mềm và dựa trên phần cứng Java cung cấp. Nền tảng Java khác với nhiều
nền tảng khác ở chỗ nó chạy ở trên các nền tảng phần cứng khác.

6


Bảo mật: Chương trình Java chạy trong môi trường thực thi ảo. Ngoài ra,

ngôn ngữ Java cũng cung cấp các tính năng bảo mật riêng như hạn chế sử
dụng con trỏ, cung cấp trình quản lý bảo mật, ...
Ngôn ngữ mạnh: Java sử dụng hệ quản trị bộ nhớ mạnh mẽ. Bên cạnh đó
còn có trình dọn rác tự động, xử lý ngoại lệ và kiểm tra kiểu. Tất cả
những thành phần đó làm cho Java trở thành một ngôn ngữ mạnh.
Độc lập cấu trúc: Đó là không có đặc điểm nào mà phụ thuộc vào trình
triển khai.
Portable: Chương trình được biên dịch thành Java Bytecode và chạy bất
cứ nền tảng nào.
Hiệu suất cao: Sử dụng Just-In-Time compilers là một trình biên dịch hỗ
trợ biên dịch các chức năng tương tự cùng lúc, giảm thời gian biên dịch.
Trình biên dịch này giúp ngôn ngữ Java nâng cao hiệu năng, phát hiện lỗi
và gỡ lỗi được dễ dàng, nhanh chóng.
Phân tán: Chúng ta có thể tạo các ứng dụng phân tán trong Java. Chúng
ta có thể truy cập các file bằng việc gọi các phương thức từ bất cứ thiết bị
nào trên Internet.
Đa luồng: Luồng thực thi giống như một chương trình riêng rẽ, thực thi
một cách đồng thời. Chúng ta có thể viết các chương trình Java mà xử lý
nhiều tác vụ cùng một lúc bằng việc định nghĩa nhiều luồng. Lợi thế
chính của đa luồng là nó chia sẻ cùng bộ nhớ.
Khác với Java, Php là một ngôn ngữ kịch bản, thông dịch và mã nguồn mở.
Php là ngôn ngữ có cú pháp đơn giản, dễ sử dụng và thời gian xây dựng sản phẩm
ngắn. Php có thể nhúng vào trong các trang html để thực thi chức năng. Hiện nay,
Php đã phát hành phiên bản Php 7, cung cấp nhiều tính năng mới. Các ứng dụng lớn
sử dụng Php có thể kể tới Wordpress, Facebook, ...
PHP chạy trên môi trường Webserver và lưu trữ dữ liệu thông qua hệ quản
trị cơ sở dữ liệu nên PHP thường đi kèm với Apache, My SQL và hệ điều hành
Linux (LAMP).

7



Apache là một phần mềm web server có nhiệm vụ tiếp nhận yêu cầu từ
trình duyệt người dùng sau đó chuyển giao cho PHP xử lý và gửi trả lại
cho trình duyệt.
My SQL cũng tương tự như các hệ quản trị cơ sở dữ liệu khác (Postgress,
Oracle, SQL server...) đóng vai trò là nơi lưu trữ và truy vấn dữ liệu.
Linux là hệ điều hành mã nguồn mở được sử dụng rất rộng rãi cho các
web server. Thông thường các phiên bản được sử dụng nhiều nhất là
RedHat Enterprise Linux, Ubuntu...
C# là một ngôn ngữ lập trình đơn giản, hiện đại, mục đích tổng quát, hướng
đối tượng được phát triển bởi Microsoft. Ngôn ngữ này được phát triển bởi Anders
Hejlsberg và các cộng sự của ông trong khi phát triển .Net Framework. C# cho phép
sử dụng các ngôn ngữ cấp cao đa dạng trên các nền tảng và cấu trúc máy tính khác
nhau. Các ứng dụng WinForm, WebForm được xây dựng với .Net Framework
Ngôn ngữ này được lập trình bằng công cụ Visual Studio kết hợp với cơ sở dữ liệu
Sql Server hoặc Oracle. Ứng dụng viết bằng ngôn ngữ này không thể chạy trên
server Linux và rất khó lập trình nếu như không có Visual Studio.
Còn nhiều ngôn ngữ lập trình khác cũng đang trở lên phổ biến để xây dựng
ứng dụng như Javascript, Python, Ruby, Go lang, ... Các kỹ thuật tấn công vào một
website ngày nay chủ yếu tập trung vào những lỗ hổng trong quá trình tạo ứng dụng
của những nhà sản xuất website hơn là tấn công vào hệ thống mạng hoặc hệ điều
hành.

1.1.3 Hosting và tên miền
Hosting là không gian lưu trữ trên máy chủ có cài đặt các dịch vụ như world
wide web (www), truyền file (FTP), Mail, ... Hosting là nơi diễn ra tất cả các hoạt
động trao đổi thông tin giữa website với người sử dụng. Một doanh nghiệp có thể
thuê hosting của nhà cung cấp dịch vụ hoặc tự trang bị máy chủ riêng tùy vào kinh
phí cũng như mục đích sử dụng. Dung lượng hosting là không gian lưu trữ trên

server. Băng thông là một thông số chỉ ra giới hạn dung lượng đối đa của các thông
tin mà website lưu trữ qua lại trong mỗi tháng.

8


Tên miền là một địa chỉ định danh trên Internet đại diện cho một website.
Website được truy cập bằng cách viết tên miền trên trình duyệt. Tên miền cũng có
rất nhiều loại được phân biệt với nhau bằng đuôi như tên miền tổ chức chính phủ
.org, tên miền giáo dục .edu hoặc tên miền công ty, doanh nghiệp, tổ chức .com
hoặc tên miền quốc gia .vn, ... Mỗi tên miền là duy nhất trên thế giới, việc mua bán
tên miền có thể thực hiện thông qua dịch vụ của nhà cung cấp.

1.1.4 Cơ sở dữ liệu
Để xây dựng một website có nội dung được cập nhật liên tục, không thể
thiếu được đó là một cơ sở dữ liệu lưu trữ thông tin, dữ liệu của website. Cơ sở dữ
liệu được thiết kế phù hợp cho mỗi ứng dụng web riêng. Trong cơ sở dữ liệu, các dữ
liệu được lưu trữ thành các bản ghi có cấu trúc, có các trường dữ liệu và có mối
quan hệ ràng buộc với nhau. Mô hình cơ sở dữ liệu được chia thành:
Cơ sở dữ liệu dạng file
Cơ sở dữ liệu quan hệ
Cơ sở dữ liệu bán cấu trúc
Cơ sở dữ liệu hướng đối tượng.
Các ngôn ngữ lập trình sẽ truy vấn dữ liệu từ cơ sở dữ liệu và hiển thị lên
trang web. Ngoài ra, các hệ quản trị cơ sở dữ liệu như My SQL, SQL Server,
Postgres, ... được phát triển để thao tác với cơ sở dữ liệu.

1.1.5 Phiên làm việc
1.1.5.1 Cookie
Cookie là một đoạn dữ liệu được ghi vào đĩa cứng hoặc bộ nhớ của máy

người sử dụng. Nó được trình duyệt đính kèm vào header của request gửi lên web
server. Những thông tin được lưu trữ trong cookie hoàn toàn phụ thuộc vào website
trên server. Mỗi website có thể lưu trữ những thông tin khác nhau trong cookie, ví
dụ thời điểm lần cuối ta ghé thăm website, đánh dấu ta đã login hay chưa, ...
Cookie được tạo ra bởi web server dựa vào những thông tin của người truy
cập, sau đó, web server được gửi về trình duyệt. Ngoài ra, mỗi trình duyệt quản lý

9


và lưu trữ cookie theo cách riêng của mình, cho nên hai trình duyệt cùng truy cập
vào một website sẽ nhận được hai cookie khác nhau.
Một máy ở phía người dùng có thể lưu được số lượng lớn cookies, khoảng
300 cookies. Kích thước tối đa cho một cookies là 4KB. Mỗi website giới hạn
khoảng 20 cookies. Nếu vượt quá giới hạn lưu trữ, máy phía người dùng tự động
xóa đi những cookies ít sử dụng hoặc không còn sử dụng.

1.1.5.2 Session
Session là phiên làm việc, mục đích của nó giản để lưu trữ một biến và duy
trì biến đó tồn tại từ trang này sang trang khác. Nếu như với các biến thông thường,
khi trang web bắt đầu thực thi, biến đó sẽ được cấp phát bộ nhớ, lưu giá trị và thu
hồi vùng nhớ sau khi trang kết thúc. Session sẽ khác, nó có thể được tạo ra, tồn tại
trên server, có thể xuyên từ trang này sang trang khác, chỉ mất đi khi ta xóa, hết hạn
hoặc tắt trình duyệt.
Session khi sinh ra được lưu trên một file có tên dài dòng, khó đoán và được
tạo ngẫu nhiên là session id trên máy chủ, và đồng thời ở máy client cũng có một
cookie sinh ra có nội dung đúng như session ID đối với mỗi ngôn ngữ lập trình web
sẽ có tên cookie quy định như Php là PHPSESSID, Jsp là JSESSIONID, … Các giá
trị của biến session sẽ được lưu trong file.
Thông thường session được ứng dụng vào việc quản lý đăng nhập, đăng xuất

của thành viên. Với những tác vụ cần xác nhận là thành viên mới sử dụng được,
chúng ta cần yêu cầu thành viên đăng nhập vào hệ thống. Nhưng nếu chỉ dùng biến
thông thường thì mỗi lần cần thực hiện lại phải đăng nhập vào. Trong khi ấy, nếu
dùng session thì sau khi đăng nhập, một biến session được tạo ra, thì biến này sẽ tồn
tại từ trang này sang trang khác, như thế khi cần thực hiện tác vụ khác cần đăng
nhập, ta chỉ cần kiểm tra xem có tồn tại biến session này hay chưa là đủ. Nếu chưa
tồn tại thì người dùng cần đăng nhập để thực hiện tiếp chức năng.

10


1.1.6 Web service
Web service là dịch vụ web khác với khái niệm web và website thông
thường. Web service trả về người dùng các thông tin dữ liệu dạng thô, các ứng dụng
như ứng dụng web, ứng dụng điện thoại, … sẽ chế biến dữ liệu sau đó hiển thị cho
người dùng cuối trên giao diện. Các ứng dụng có thể sử dụng một hoặc nhiều Web
service để thực hiện theo chức năng của ứng dụng. Với sự phát triển và lớn mạnh
của Internet, Web service thật sự là một công nghệ đáng được quan tâm để giảm chi
phí và độ phức tạp trong tích hợp và phát triển hệ thống.

1.1.6.1 Đặc điểm
Web service mô tả một cách thức chuẩn để tích hợp các ứng dụng dựa trên
nền tảng Web, sử dụng các chuẩn XML (Extensible Markup Language), UDDI
(Universal Description Discovery and Integration), SOAP (Simple Object Acces
Protocol), WSDL (Web Services Description Language) thông qua giao thức
Internet.
Web service có khả năng giúp cho việc tương tác trong những môi trường
khác nhau trở lên đơn giản. Các ứng dụng web thường được triển khai trên các môi
trường phù hợp với ngôn ngữ lập trình. Khi được xây dựng trên môi trường khác
nhau, các thành phần trong ứng dụng cần một chuẩn để giao tiếp và trao đổi thông

tin với nhau. Môi trường kết nối giữa các thành phần có thể trong mạng cục bộ hoặc
qua mạng Internet. Một ứng dụng khi được triển khai sẽ hoạt động theo mô hình
client-server. Nó có thể được triển khai bởi một phần mềm ứng dụng phía server ví
dụ như Apache, My SQL Server, Jboss hay .Net, …
Ngày nay, các ứng dụng tích hợp Web service đã phát triển rất mạnh mẽ, đặc
biệt trong điều kiện thương mại điện tử đang bùng nổ và phát triển không ngừng.
Bất kì một lĩnh vực nào trong cuộc sống cũng có thể tích hợp công nghệ Web
service. Tích hợp Web service mang lại sự tiện lợi và khả năng tái sử dụng cao. Do
vậy, việc phát triển và tích hợp các ứng dụng với Web service đang là hướng đi
đúng đắn trong tương lai.

11


1.1.6.2 Ưu điểm và nhược điểm của Web service
a. Ưu điểm của Web service
Web Services có những ưu điểm chính sau:
Thúc đẩy đầu tư các hệ thống phần mềm đã tồn tại bằng cách cho phép
các tiến trình, chức năng nghiệp vụ đóng gói trong giao diện Web service.
Tạo mối quan hệ tương tác lẫn nhau và mềm dẻo giữa các thành phần
trong hệ thống, dễ dàng cho việc phát triển các ứng dụng phân tán.
Thúc đẩy hệ thống tích hợp, giảm sự phức tạp của hệ thống, hạ giá thành
hoạt động, phát triển hệ thống nhanh và tương tác hiệu quả với hệ thống
của các doanh nghiệp khác.
Khả năng vượt tường lửa: Web Service hoạt động trên nền HTTP nên sử
dụng cổng 80, là cổng mà tường lửa cho phép.
Hoạt động trên đa môi trường: Web Service dựa trên công nghệ XML
được hỗ trợ bởi tất cả các hệ điều hành kể cả môi trường di dộng.
Tính linh hoạt, dễ chuyển đổi: Web Service chỉ bao gồm các hàm nên
việc thay đổi dễ dàng và giảm chi phí đường truyền do truyền dữ liệu

không định dạng HTML.
Sử dụng các giao thức và chuẩn mở. Giao thức và định dạng dữ liệu dựa
trên văn bản, giúp các lập trình viên dễ dàng hiểu được.
b. Nhược điểm của Web service
Mặc dù Web service có nhiều ưu điểm như trên, nó vẫn còn tồn tài một số
nhược điểm như:
Có quá nhiều chuẩn cho Web service khiến người dùng khó nắm bắt.
Phải quan tâm nhiều hơn đến vấn đề an toàn và bảo mật.
Phụ thuộc nhiều vào công nghệ.
Có thể lỗi nếu một máy khách không được nâng cấp, thiếu các giao thức
cho việc vận hành.

1.1.6.3 Các thành phần của Web service
Các thành phần trong Web service được mô tả trong Hình 1.2
12


Tầng giao thức tương tác dịch vụ ( Service
Communication Protocol)

Giao dịch (Transaction)

Tầng mô tả dịch vụ ( Service Descript)

Bảo mật (Security)

Tầng dịch vụ (Service)

Chính sách (Policy)


Tầng đăng ký dịch vụ (Service
Registry)

Tầng xử lý nghiệp vụ (Business Process)

Tầng vận chuyển (Transport Layer)
Hình 0.2. Các thành phần của Web service

Tầng giao vận (Transport Layer) có nhiệm vụ truyền thông điệp giữa các
ứng dụng mạng, bao gồm các giao thức như HTTP, SMTP, ....
Tầng giao thức tương tác dịch vụ (Service Communication Protocol) với
công nghệ chuẩn là SOAP. SOAP cho phép người dùng triệu gọi một
service từ xa thông qua một message XML. Có nhiệm vụ giải mã các
thông điệp theo định dạng XML để có thể hiểu được ở mức ứng dụng
tương tác với người dùng.
Tầng mô tả dịch vụ (Service Description) sử dụng để miêu tả các giao
diện chung cho một Web service cụ thể với công nghệ chuẩn là WSDL và
XML. WSDL thường được sử dụng cho mục đích này, nó là một ngôn
ngữ mô tả giao tiếp và thực thi dựa trên XML. Web service sẽ sử dụng
ngôn ngữ này để truyền tham số và các loại dữ liệu cho các thao tác và
chức năng mà dịch vụ Web cung cấp.
Tầng dịch vụ (Service) cung cấp các chức năng của service.
Tầng xử lý nghiệp vụ (Business Process) tiến hành các bước xử lý thông
tin đầu vào để cho kết quả đầu ra theo yêu cầu, là các hoạt động có tính
chất nghiệp vụ.
Tầng đăng ký dịch vụ (Service Registry) với công nghệ chuẩn là UDDI.
UDDI dùng cho cả người dùng và SOAP server, nó cho phép đăng ký
13



dịch vụ để người dùng có thể gọi thực hiện service từ xa qua mạng, hay
nói cách khác một service cần phải được đăng ký để cho phép các client
có thể gọi thực hiện.
a.

XML - Extensible Markup Language
XML là một chuẩn mở do W3C đưa ra cho cách thức mô tả dữ liệu, nó được

sử dụng để định nghĩa các thành phần dữ liệu trên trang web. XML là viết tắt của
Extensible Markup Language, tạm dịch là ngôn ngữ đánh dấu mở rộng. XML là
ngôn ngữ xây dựng cấu trúc tài liệu văn bản, được thiết kế dựa trên SGML theo tiêu
chuẩn ISO 8879 nhằm phục vụ việc quản trị các tài liệu điện tử. XML được xây
dựng từ dưới sự chỉ đạo của W3C từ năm 1996 và chính thức thông qua vào 2/1998.
Do Web service là sự kết hợp của nhiều thành phần khác nhau nên nó sử
dụng các tính năng và đặc trưng của các thành phần đó để giao tiếp. XML là công
cụ chính để giải quyết vấn đề này và là kiến trúc nền tảng cho việc xây dựng một
Web service, tất cả dữ liệu sẽ được chuyển sang định dạng thẻ XML. Khi đó, các
thông tin mã hóa sẽ hoàn toàn phù hợp với các thông tin theo chuẩn của SOAP hoặc
XML- RPC và có thể tương tác với nhau trong một thể thống nhất.
Ngôn ngữ XML không chỉ dùng để mô tả sự trình bày nội dung tài liệu và
còn có phương pháp định ra nội dung, sắp xếp cấu trúc, từ vựng và cú pháp của dữ
liệu. XML có cấu trúc mã chặt chẽ, tách biệt nội dung ra khỏi hình thức của dữ liệu
và mang lại thông tin đầy đủ về dữ liệu góp phần hỗ trợ cho việc tìm kiếm và sử
dụng thông tin được dễ dàng hơn, cho phép hiển thị cùng một tài liệu trên một số
ứng dụng hoặc thiết bị ngoại vi khác nhau mà không phải tạo ra phiên bản tài liệu
mới.
Đặc điểm của XML
XML là một ngôn ngữ đánh dấu độc lập với phần mềm, phần cứng và nền
tảng. Cho phép các máy tính truyền cấu trúc dữ liệu giữa hệ thống không đồng nhất.
Về hình thức, XML hoàn toàn có cấu trúc thẻ giống như ngôn ngữ HTML

nhưng HTML định nghĩa thành phần được hiển thị như thế nào thì XML lại định
nghĩa những thành phần đó chứa cái gì. Với XML, các thẻ có thể được lập trình

14


×