Tải bản đầy đủ (.docx) (88 trang)

Phương pháp đảm bảo an toàn theo yêu cầu trong phát triển web 1

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.45 MB, 88 trang )

BAN CƠ YẾU CHÍNH PHỦ
HỌC VIỆN KỸ THUẬT MẬT MÃ
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

ĐỒ ÁN TỐT NGHIỆP

PHƯƠNG PHÁP ĐẢM BẢO AN TOÀN THEO KỸ NGHỆ
HƯỚNG YÊU CẦU TRONG PHÁT TRIỂN WEB

Ngành: An toàn thông tin
Mã số: 7.48.02.02

Sinh viên thực hiện:
NoName
Lớp: AT..C
Người hướng dẫn:


Hà Nội, 2019
BAN CƠ YẾU CHÍNH PHỦ
HỌC VIỆN KỸ THUẬT MẬT MÃ
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

ĐỒ ÁN TỐT NGHIỆP

PHƯƠNG PHÁP ĐẢM BẢO AN TOÀN THEO KỸ NGHỆ
HƯỚNG YÊU CẦU TRONG PHÁT TRIỂN WEB


Ngành: An toàn thông tin
Mã số: 7.48.02.02



Sinh viên thực hiện:
NoName
Lớp: AT..C
Người hướng dẫn:

Hà Nội, 2019


MỤC LỤC
Mục lục.....................................................................................................................3
Danh mục từ viết tắt................................................................................................6
Danh mục các hình vẽ.............................................................................................7
Danh mục các bảng.................................................................................................8
Lời cảm ơn...............................................................................................................9
Lời nói đầu.............................................................................................................10
Chương 1: Tổng quan về an toàn ứng dụng web...............................................12
1.1. Khái niệm và mô hình hoạt động ứng dụng web.........................................12
1.1.1. Khái niệm..............................................................................................12
1.1.2. Mô hình hoạt động................................................................................12
1.2. Nguy cơ mất an toàn ứng dụng web.............................................................13
1.2.1. Rò rỉ dữ liệu..........................................................................................14
1.2.2. Bùng nổ mã độc....................................................................................15
1.2.3. Sử dụng trí tuệ nhân tạo.......................................................................15
1.2.4. Phát triển và áp dụng 5G sẽ bắt đầu mở rộng......................................16
1.2.5. Sử dụng các thiết bị IoT để tấn công DDoS..........................................16
1.2.6. Tấn công nhắm vào việc truyền dữ liệu................................................16
1.3. Một số lỗ hổng bảo mật web phổ biến..........................................................17
1.3.1. Tấn công XSS........................................................................................17
1.3.2. Tấn công CSRF.....................................................................................18

1.3.3. Tấn công SQL Injection........................................................................19
1.3.4. Tấn công từ chối dịch vụ.......................................................................20
1.3.5. Một số tấn công khác............................................................................20
1.4. Những yếu tố đảm bảo an toàn ứng dụng web............................................21
1.5. Đánh giá an toàn ứng dụng web....................................................................22
1.6. Tổng kết chương.............................................................................................23
Chương 2: Đảm bảo an toàn trong phát triển web theo kỹ nghệ hướng
yêu cầu....................................................................................................................24
2.1. Quy trình phát triển web theo kỹ nghệ hướng yêu cầu..............................24
2.1.1. Thu thập thông tin và xác định yêu cầu................................................25
2.1.2. Lập kế hoạch.........................................................................................25
2.1.3. Phân tích, thiết kế.................................................................................25
2.1.4. Lập trình...............................................................................................26
2.1.5. Kiểm thử................................................................................................27
2.1.6. Triển khai và bảo trì..............................................................................27
2.2. An toàn trong giai đoạn xác định, phân tích yêu cầu..................................27
2.2.1. Yêu cầu bảo mật cốt lõi.........................................................................28
2.2.2. Yêu cầu bảo mật chung.........................................................................30


2.2.3. Yêu cầu khi hoạt động...........................................................................31
2.2.4. Kết luận.................................................................................................31
2.3. An toàn trong giai đoạn thiết kế....................................................................32
2.3.1. Giai đoạn thiết kế an toàn.....................................................................32
2.3.2. Lợi ích đem lại......................................................................................32
2.3.3. Thực tiễn việc thiết kế an toàn..............................................................33
2.4. An toàn trong giai đoạn lập trình..................................................................34
2.4.1. Giảm thiêu rủi ro trong quá trình code.................................................34
2.4.2. Bảo vệ mã nguồn...................................................................................37
2.4.3. Viết unit test...........................................................................................37

2.5. An toàn trong giai đoạn kiểm thử.................................................................39
2.5.1. Mục tiêu của kiểm thử bảo mật.............................................................39
2.6. An toàn trong triển khai, bảo trì...................................................................40
2.6.1. Cảnh giác với các thông báo lỗi...........................................................40
2.6.2. Cài đặt tường lửa ứng dụng web..........................................................41
2.6.3. Bảo trì ứng dụng web............................................................................42
2.7. Tổng kết chương.............................................................................................42
Chương 3: Thực nghiệm xây dựng và đảm bảo an toàn Ứng dụng web
theo kỹ nghệ hướng yêu cầu.................................................................................44
3.1. Mô tả bài toán.................................................................................................44
3.1.2. Nhược điểm của hệ thống quản lý thư viện truyền thống.....................44
3.1.3. Lợi ích của quản lý thư viện bằng website...........................................44
3.1.4. Các chức năng của chương trình..........................................................45
3.1.5. Yêu cầu về an toàn thông tin.................................................................45
3.2. Phân tích yêu cầu............................................................................................46
3.2.1. Nền tảng sử dụng..................................................................................46
3.2.2. Xác thực người dùng.............................................................................47
3.2.3. Mã hoá, xác thực thông tin giữa Client và Server................................48
3.2.4. Chống tấn công SQL Injection..............................................................48
3.2.5. Chống tấn công CSRF..........................................................................49
3.2.6. Chống tấn công XSS.............................................................................50
3.2.7. Chống spam request..............................................................................50
3.3. Thiết kế hệ thống............................................................................................50
3.3.1. Thiết kế cơ sở dữ liệu............................................................................50
3.3.2. Thiết kế chức năng................................................................................54
3.4. Lập trình xây dựng và đảm bảo an toàn cho hệ thống...............................59
3.4.1. Sử dụng Repository Design Pattern......................................................59
3.4.2. Kiểm soát dữ liệu..................................................................................60
3.4.3. Quản lý tài khoản người dùng..............................................................61
3.4.4. Xây dựng hệ thống an toàn...................................................................62

3.5. Kiểm thử và đánh giá hệ thống.....................................................................70
3.5.1. Kiểm thử lỗi XSS...................................................................................70


3.5.2. Kiểm thử lỗi SQL Injection...................................................................70
3.5.2. Kiểm thử lỗi CSRF................................................................................70
3.6. Bảo trì..............................................................................................................71
3.6.1. Ghi log ứng dụng..................................................................................71
3.6.2. Kiểm tra bảo mật thường xuyên............................................................71
3.6.3. Sao lưu dữ liệu thường xuyên...............................................................72
3.7. Tổng kết chương.............................................................................................72
Kết luận..................................................................................................................73
Tài liệu tham khảo.................................................................................................74
Phụ lục....................................................................................................................76


DANH MỤC TỪ VIẾT TẮT
Từ viết tắt
ATTT
CNTT
CSDL
CSRF
HĐH
LAN
MVC
ORM
OWASP
PDO
SDLC
VPN

WAN
WDLC
XSS

Tiếng anh

Cross-site Request Forgery
Local Area Network
Model – view – controller
Object Relational Mapping

Tiếng việt/mô tả
An toàn thông tin
Công nghệ thông tin
Cơ sở dữ liệu
Lỗ hổng bảo mật
Hệ điều hành
Mạng máy tính cục bộ

Kỹ thuật chuyển đổi dữ liệu
giữa các hệ thống khác
Open Web Application Security Một tổ chức phi lợi nhuận
Project
PHP Data Objects
Lớp truy xuất cơ sở dữ liệu
Software Development Life Quy trình phát triển phần
Cycle
mềm
Virtual Private Network
Mạng dành riêng

Wide Area Network
Mạng diện rộng WAN
Web development life cycle
Vòng đời phát triển web
Cross-Site Scripting
Lỗ hổng bảo mật


DANH MỤC CÁC HÌNH VẼ
Hình 1.1. Quá trình hoạt động ứng dụng web.........................................................12
Hình 2.1. Quy trình phát triển ứng dụng web.........................................................24
Hình 3.1. Sơ đồ phân cấp chức năng.......................................................................45
Hình 3.2. Cơ chế xác thực thông qua middleware..................................................47
Hình 3.3. Lược đồ cơ sở dữ liệu..............................................................................51
Hình 3.4. Sơ đồ tuần tự chức năng đăng nhập........................................................54
Hình 3.5. Sơ đồ tuần tự chức năng cập nhật thông tin............................................54
Hình 3.6. Sơ đồ tuần tự chức năng khôi phục mật khẩu.........................................55
Hình 3.7. Sơ đồ tuần tự chức năng đổi mật khẩu....................................................55
Hình 3.8. Sơ đồ tuần tự chức năng mượn sách.......................................................56
Hình 3.9. Sơ đồ tuần tự chức năng tìm kiếm sách..................................................56
Hình 3.10. Sơ đồ tuần tự chức năng xem chi tiết sách............................................56
Hình 3.11. Sơ đồ tuần tự chức năng xem sách đã mượn.........................................57
Hình 3.12. Sơ đồ tuần tự chức năng thêm mới sách...............................................57
Hình 3.13. Sơ đồ tuần tự chức năng thêm mới người dùng....................................58
Hình 3.14. Sơ đồ tuần tự chức năng quản lý người dùng........................................58
Hình 3.15. Validate đổi mật khẩu............................................................................61
Hình 3.16. Thông báo lỗi validate...........................................................................61
Hình 3.17. Danh sách route user.............................................................................62
Hình 3.18. Danh sách route admin..........................................................................62
Hình 3.19. Sử dụng throttle giới hạn truy cập.........................................................63

Hình 3.20. Giao thức HTTP....................................................................................64
Hình 3.21. Giao thức HTTP bị tấn công.................................................................65
Hình 3.22. Hoạt động của giao thức SSL................................................................66
Hình 3.23. Minh hoạ chống SQL Injection.............................................................69
Hình 3.24. Minh hoạ XSS.......................................................................................70
Hình 3.25. Minh hoạ SQL Injection........................................................................70
Hình 3.26. Minh hoạ lỗi CSRF...............................................................................70
Hình 3.27. Xem chi tiết log.....................................................................................71


DANH MỤC CÁC BẢNG
Bảng 4.1. Độc giả (users)........................................................................................51
Bảng 4.2. Quản trị viên (admins)............................................................................52
Bảng 4.3. Sách (books)...........................................................................................52
Bảng 4.4. Danh mục (categories)............................................................................52
Bảng 4.5. Phiếu mượn (tickets)...............................................................................53
Bảng 4.6. Chi tiết phiếu mượn (ticket_details).......................................................53
Bảng 4.7. Lấy lại mật khẩu (password_resets)........................................................53


LỜI CẢM ƠN
Trong quá trình nghiên cứu và làm đồ án. Em xin gửi lời cảm ơn chân thành và
sự tri ân sâu sắc đối với các thầy cô của trường Học viện Kỹ thuật Mật mã và đặc biệt
là thầy giáo hướng dẫn TS. đã nhiệt tình hướng dẫn chỉ bảo em trong quá trình thực
hiện đề tài.
Những góp ý, định hướng của các thầy, cô và các bạn đã giúp cho em nâng cao
được trình độ hiểu biết chuyên môn và cải thiện những kiến thức mà em còn thiếu.
Để từ đó em có thể vận dụng hoàn thành đồ án tốt nghiệp này.
Mặc dù đã cố gắng hoàn thành đồ án trong phạm vi và khả năng cho phép
nhưng chắc chắn sẽ không tránh khỏi những thiết sót. Em rất mong nhận được sự

thông cảm, góp ý của quý thầy cô và các bạn để đồ án được chỉnh sửa và hoàn thiện.
Hà Nội, ngày
tháng 06 năm 2019
Sinh viên thực hiện

NoNam


LỜI NÓI ĐẦU
Với sự phát triển mạnh của ngành công nghệ, nhu cầu sử dụng máy tính và truy
cập internet tăng lên từng ngày. Trong thời đại ngày nay internet đã trở nên rất quen
thuộc và là một công cụ hữu ích để truyền tải và quảng bá thông tin, thực hiện các
hoạt động kinh doanh, mua bán và quản lý. Tất cả đã kéo theo sự phát triển không
ngừng của các ứng dụng web. Và dần khái niệm ứng dụng web đã trở nên phổ biến.
Kéo theo đó là các cuộc tấn công ứng dụng web cũng phát triển hết sức phức tạp và
ngày càng tăng lên.
Điều này đã đặt ra vấn để cấp thiết cần làm như thế nào để bảo đảm an toàn
thông tin cho ứng dụng web, thông tin của người sử dụng. Các khái niệm chuyên
môn và tấn công về ứng dụng web cũng dần trở nên phổ biến hơn trong tài liệu
chuyên ngành. Các công cụ hỗ trợ người lập trình web, người quản trị mạng cũng
xuất hiện nhiều giúp tìm kiếm lỗ hổng ứng dụng web nhưng nó không theo kịp sự
phát triển nhanh đến mức chóng mặt theo xu hướng nhanh hơn đẹp hơn của các ứng
dụng web, và nó không thể ngăn chặn hoàn toàn. Các cuộc tấn công ngày càng đa
dạng và được khai thác triệt để những lỗi của ứng dụng web, của người quản trị, hay
người lập trình.
Thống kê cho thấy 75% cuộc tấn công internet là tấn công ứng dụng web
[ CITATION Acu \l 1066 ], nó gây ra những thiệt hại vô cùng to lớn, vì vậy việc tìm
hiểu về tấn công ứng dụng web là rất cần thiết nhằm có cách phòng chống và bảo mật
ứng dụng web hiệu quả trở thành một yêu cầu cấp thiết.
Do đây là một xu thế tất yếu của thời đại, nên việc tìm hiểu và nghiên cứu về

ứng dụng web sẽ giúp ích rất nhiều cho các nhà lập trình web mới, hay các quản trị
viên mới còn ít kinh nghiệm trong việc quản trị hệ thống mạng của mình, phòng
tránh, khắc phục những lỗ hổng đó.
Đồ án này nhằm mục đích giới thiệu rõ hơn về ứng dụng web, xây dựng quy
trình phát triển web theo kỹ nghệ hướng yêu cầu và áp dụng vào xây dựng một
website an toàn. Để thực hiện các nội dung trên, luận văn được tổ chức thành các
chương sau:
CHƯƠNG 1: TỔNG QUAN VỀ AN TOÀN ỨNG DỤNG WEB
Nội dung chương này khái quát về khái niệm ứng dụng web, tìm hiểu nguy cơ
gây mất an toàn và tìm hiểu một số lỗ hổng ứng dụng web phổ biến và cách khắc


phục, phòng tránh. Từ đó xác định ra những yếu tố đảm bảo một ứng dụng web an
toàn và đánh giá nó. Từ những kiến thức cơ bản này sẽ áp dụng để xây dựng quy
trình phát triển ứng dụng web an toàn.
CHƯƠNG 2: ĐẢM BẢO AN TOÀN TRONG PHÁT TRIỂN WEB THEO KỸ
NGHỆ HƯỚNG YÊU CẦU
Nội dung chương tìm hiểu về quy trình phát triển web theo kỹ nghệ hướng yêu
cầu thông thường sau đó nghiên cứu áp dụng các yêu cầu bảo mật theo từng giai đoạn
dựa theo quy trình phát triển ứng dụng web.
CHƯƠNG 3: THỰC NGHIỆM XÂY DỰNG VÀ ĐẢM BẢO AN TOÀN
ỨNG DỤNG WEB THEO KỸ NGHỆ HƯỚNG YÊU CẦU
Chương này mô tả cách triển khai được áp dụng từ quá trình nghiên cứu ở
Chương 2 để phát triển một ứng dụng web an toàn nhỏ, đáp ứng được các yêu cầu
bảo mật cơ bản theo từng giai đoạn.


CHƯƠNG 1: TỔNG QUAN VỀ AN TOÀN ỨNG DỤNG WEB
1.1. Khái niệm và mô hình hoạt động ứng dụng web
1.1.1. Khái niệm

Ứng dụng web là một phần mềm ứng dụng nền tảng web để chạy các phần
mềm theo mong muốn và nhu cầu của người sử dụng. Thông qua ứng dụng web
người dùng có thể thực hiện được một số công việc như: chia sẻ hình ảnh, mua sắm,
phần mềm quản lý,… thông qua các tác vụ internet.

Hình 1.1. Quá trình hoạt động ứng dụng web
Quá trình hoạt động ứng dụng web được mình hoạ như trên Hình 1.1 bắt đầu
với yêu cầu được tạo ra từ người dùng trên trình duyệt, gửi qua Internet tới máy chủ
ứng dụng web. Ứng dụng truy cập cơ sở dữ liệu để thực hiện nhiệm vụ được yêu cầu:
cập nhật, truy vấn thông tin đang nằm trong cơ sở dữ liệu. Sau đó ứng dụng web gửi
thông tin lại cho người dùng qua trình duyệt.
1.1.2. Mô hình hoạt động
Tùy thuộc vào số máy chủ và cơ sở dữ liệu được sử dụng cho ứng dụng web,
mô hình ứng dụng web có thể hoạt động theo 3 cách sau:
a. Một máy chủ web, một cơ sở dữ liệu
Đây là mô hình ứng dụng web đơn giản nhất nhưng có nhiều rủi ro nhất. Mô
hình như vậy chỉ sử dụng một máy chủ và một cơ sở dữ liệu duy nhất. Nếu máy chủ
ngừng hoạt động, ứng dụng web cũng vậy. Mô hình đơn giản như vậy có thể phù hợp
với một số dự án thử nghiệm hoặc cá nhân.
Mô hình này thường không được sử dụng cho các ứng dụng web thực tiễn với
quy mô lớn. Nó chủ yếu được sử dụng để chạy các dự án thử nghiệm, dự án nhỏ, tìm
hiểu và hiểu các nguyên tắc cơ bản của ứng dụng web.
b. Nhiều máy chủ web, một cơ sở dữ liệu
Để mở rộng máy chủ web theo chiều ngang, cần phải chạy cơ sở dữ liệu trên
một máy chủ web riêng biệt. Khi máy chủ web lấy thông tin từ máy khách sẽ xử lý


tương tự và sau đó ghi vào cơ sở dữ liệu được quản lý bên ngoài máy chủ. Điều này
còn được gọi là “kiến trúc không trạng thái (stateless architecture)”. Kiến trúc không
trạng thái là thiết kế không lưu dữ liệu của client trên server, chỉ phụ thuộc vào các

tham số đầu vào được cung cấp. Có nghĩa là sau khi client gửi dữ liệu lên server,
server thực thi xong, trả kết quả thì “quan hệ” giữa client và server bị “cắt đứt” server
không lưu bất cứ dữ liệu gì của client.
Ngay cả khi một trong các máy chủ web ngừng hoạt động, một máy chủ khác
sẽ chịu trách nhiệm. Tất cả các yêu cầu được thực hiện sẽ được chuyển hướng tự
động đến máy chủ mới và ứng dụng web sẽ tiếp tục thực hiện. Do đó, độ tin cậy tốt
hơn so với máy chủ đơn với mô hình cơ sở dữ liệu vốn có. Tuy nhiên, nếu cơ sở dữ
liệu bị treo, toàn bộ hệ thống cũng sẽ tê liệt.
c. Nhiều máy chủ web, nhiều cơ sở dữ liệu
Đây là mô hình ứng dụng web hiệu quả nhất. Có hai lựa chọn cho loại mô hình
này. Lưu trữ dữ liệu giống nhau trong tất cả các cơ sở dữ liệu được sử dụng hoặc
phân phối dữ liệu đồng đều giữa chúng. Trong trường hợp đầu tiên, thường không
cần nhiều hơn 2 cơ sở dữ liệu; khi một cái bị hỏng, cái kia có thể thay thế nó và
không bị mất. Vì dữ liệu không được sao chép trong trường hợp thứ hai, một số dữ
liệu có thể tạm thời không khả dụng nếu một trong nhiều cơ sở dữ liệu gặp sự cố.
Tuy nhiên, mô hình này vẫn được coi là mô hình hiệu quả nhất: cả máy chủ
web và cơ sở dữ liệu vẫn có thể hoạt động nếu 1 trong số máy chủ hoặc cơ sở dữ liệu
khác gặp lỗi. Nếu quy mô lớn hơn 5 máy chủ web hoặc cơ sở dữ liệu nên cài đặt bộ
cân bằng tải.
1.2. Nguy cơ mất an toàn ứng dụng web
Với những tiến bộ trong công nghệ web cùng với sự phát triển ngành công
nghiệp công nghệ thông tin, các ứng dụng web đang dần trở nên phổ biến. Mặc dù
chúng có thể mang lại nhiều lợi ích và giải pháp nhưng đi kèm với đó là một số mối
đe dọa bảo mật ứng dụng web. Chúng có thể gây rủi ro rất lớn tới cơ sở hạ tầng công
nghệ thông tin của tổ chức nếu không được xử lý đúng cách. Sự phát triển nhanh
chóng trong việc triển khai ứng dụng web đã tạo ra các cơ sở hạ tầng phân tán, phức
tạp hơn và khó bảo mật hơn.
Trong hơn một thập kỷ, các tổ chức chỉ phụ thuộc vào các biện pháp bảo mật ở
vùng mạng như tường lửa để bảo vệ cơ sở hạ tầng. Tuy nhiên, hiện nay ngày càng có



nhiều cuộc tấn công nhằm vào các lỗ hổng bảo mật trong thiết kế ứng dụng web,
chẳng hạn như lỗi tiêm chích. Cách bảo vệ an ninh mạng truyền thống không đủ để
bảo vệ các mối đe dọa này. Những mối đe dọa bắt nguồn từ các điểm truy cập máy
khách không đáng tin cậy, các giao thức không có phiên, lỗi thời, độ phức tạp chung
của các công nghệ web và sự không an toàn của lớp mạng.
Với các ứng dụng web phía máy khách thường không được kiểm soát chặt chẽ
bởi người sở hữu. Do đó, đầu vào từ máy khách thường không được tin cậy và xử lý
trực tiếp. Kẻ tấn công có thể giả mạo danh tính như một người dùng hợp pháp, sao
chép danh tính hoặc tạo các tin nhắn và cookie lừa đảo. Ngoài ra, HTTP là một giao
thức không có phiên, và do đó dễ bị phát lại và tấn công tiêm chích, chặn bắt. Nội
dung có thể dễ dàng bị sửa đổi và giả mạo.
Năm 2019 đã có rất nhiều sự thay đổi về bảo mật ứng dụng web, số lượng tăng
hơn nhiều so với năm 2018. Do sự phát triển của công nghệ web, một số lỗ hổng mới
ở mức độ nguy hiểm cũng đã xuất hiện nhiều hơn. Trong đó, XSS (Cross Site
Scripting) vẫn là lỗ hổng phổ biến và nguy hiểm nhất trên thế giới, càng nhiều
website xây dựng trên javascript khiến lỗ hổng XSS càng trở lên phổ biến. Việc cập
nhật các lỗ hổng bảo mật này liên tục rất tốn thời gian và chi phí. Nên sử dụng một
nền tảng cơ bản để triển khai các giải pháp bảo mật như: Giám sát, antivirus, quét lỗ
hổng và tường lửa và cập nhật các bản vá… với ứng dụng web là những xu hướng
cần thiết để vận hành một website an toàn và liên tục.
1.2.1. Rò rỉ dữ liệu
Trong năm 2018, xuất hiện nhiều cuộc tấn công mạng nhằm vào các hệ thống
và trang web của nhiều tập đoàn lớn liên tục xuất hiện, đây sẽ là một phần bối cảnh
an ninh mạng trong năm 2019. Rất nhiều công ty, tập đoàn nối tiếng trên thế giới và
cả các cơ quan chính phủ như Facebook, Google… đã phải chịu những vi phạm an
ninh mạng đáng kể về dữ liệu.
a. Bê bối dữ liệu Cambridge Analytica của Facebook
Việc thông tin tài khoản của 87 triệu người dùng Facebook được sử dụng nhằm
tác động đến kết quả bầu cử tổng thống là tâm điểm của mọi bản tin an toàn thông tin.

CEO của Facebook, Mark Zuckerberg đã phải điều trần trước Thượng viện – Hạ viện
Mỹ và nghị viện Châu Âu [ CITATION Bảo18 \l 1066 ].
b. Google+ đóng cửa vì rò rỉ dữ liệu người dùng


Không lâu sau bê bối của Facebook, thông tin về việc lộ dữ liệu của 500.000
người dùng Google+ bị công bố. Google buộc phải đóng cửa vĩnh viễn mạng xã hội
này [ CITATION Min19 \l 1066 ].


c. FIFA lộ 70 triệu tài liệu và 3,4 terabyte dữ liệu
Tài liệu này được công bố bởi Football Leaks và chứa nhiều thông tin về các
hành vi tham nhũng trong bóng đá. Lượng dữ liệu rò rỉ này đã vượt qua cả vụ Tài liệu
Panama, vốn được coi là vụ lộ lọt dữ liệu lớn nhất thế giới [ CITATION Cys18 \l
1066 ].
1.2.2. Bùng nổ mã độc
a. Mã độc đào tiền ảo bùng nổ
Mã độc đào tiền ảo phát tán qua Facebook đang quay trở lại với tốc độ bùng
phát theo cấp số nhân nhờ vào khả năng đăng bài trên các nhóm (group) có đông
người tham gia.
Đến nay đã có 45.000 máy tính [ CITATION BT19 \l 1066 ] là nạn nhân của
dòng mã độc này. Không chỉ chiếm quyền điều khiển máy tính nạn nhân, nó còn có
khả năng kiểm soát trình duyệt của người dùng, từ đó update thêm các mã độc khác
nhằm chiếm đoạt các loại mật khẩu, tài khoản ngân hàng.
b. Mã độc trên di động tăng nhanh
Mỗi ngày, 24.000 ứng dụng độc hại [ CITATION Cys18 \l 1066 ] bị chặn trước
khi được tung ra. Số chủng loại malware đã tăng 54% trong riêng năm 2018. Số
lượng người sử dụng thiết bị di động ngày một tăng và tính phân mảnh của hệ điều
hành Android càng thúc đẩy sự phổ biến của loại malware này.
c. Tăng cường bảo mật mạng

Google Chrome cảnh báo các website không có HTTPS là “Không bảo mật”.
Giao thức HTTPS đã vượt HTTP và được sử dụng bởi hơn một nửa số website trên
toàn thế giới. Trình duyệt đã đưa ra cảnh báo về tính bảo mật của giao thức HTTP
đơn thuần và có các hình thức ưu tiên cho giao thức an toàn HTTPS.
1.2.3. Sử dụng trí tuệ nhân tạo
Trong năm 2019, AI có thể sẽ trở thành chìa khóa của cuộc tấn công mạng
[ CITATION vie18 \l 1066 ]. Những kẻ tấn công sẽ khai thác hệ thống trí tuệ nhân tạo
(AI) để hỗ trợ các cuộc tấn công, các doanh nghiệp sẽ ngày càng lệ thuộc vào AI để
chống lại các cuộc tấn công và xác định các lỗ hổng bảo mật.
Đối với an ninh mạng của các tổ chức, doanh nghiệp
 Bảo mật sử dụng học máy để phát hiện các mối đe dọa mới.
 Khám phá và sửa các lỗ hổng mới trước khi kẻ tấn công tìm thấy chúng.
 Mô phỏng các cuộc tấn công mạng nâng cao.


 Có thể giúp bảo vệ bảo mật và quyền riêng tư kỹ thuật số cá nhân, ví dụ:
Cảnh báo người dùng để bật xác thực 2 yếu tố khi thiết lập địa chỉ email
mới. Cảnh báo về rủi ro bảo mật tiềm ẩn và sự đánh đổi khi chấp nhận
cung cấp thông tin cá nhân khi đăng ký một số dịch vụ miễn phí.
Đối với những kẻ tấn công
 Phá hủy hệ thống doanh nghiệp dựa trên AI tự động.
 Tăng cường hoạt động tội phạm để thăm dò các mạng và dò quét các lỗ
hổng mới
 Tự động tạo ra các kỹ nghệ xã hội cực kỳ tinh vi với việc làm âm thanh giả
rất thật, video giả, v.v.
 Có thể tạo bộ công cụ hỗ trợ AI để dễ cá nhân hóa, tiết kiệm chi phí và khả
năng tiếp cận với tội phạm nhỏ.
1.2.4. Phát triển và áp dụng 5G sẽ bắt đầu mở rộng
Đi kèm với sự phát triển của công nghệ 5G là những mối đe dọa ngày càng
tăng cao.

 Nhiều thiết bị IoT 5G sẽ kết nối với mạng 5G, khiến chúng dễ bị tấn công
hơn.
 Đối với người dùng gia đình, sẽ khó khăn hơn để giám sát tất cả các thiết bị
IoT.
 Sự phụ thuộc trực tiếp hơn vào lưu trữ dựa trên đám mây sẽ lộ ra các mối
hiểm hoạ mới.
1.2.5. Sử dụng các thiết bị IoT để tấn công DDoS
Các thiết bị IoT tại nhà đang trở nên phổ biến hơn, nhiều khả năng sẽ có những
nỗ lực trong tương lai để vũ khí hóa chúng do mạng lưới này còn quá mới. Thiếu sót
trong những biện pháp kiểm soát an ninh cơ bản đã biến các thiết bị IoT thành mục
tiêu dễ tấn công đối với tội phạm mạng và những kẻ tấn công khác.
1.2.6. Tấn công nhắm vào việc truyền dữ liệu
Cả người tiêu dùng và doanh nghiệp sẽ trở thành mục tiêu của hacker.
Đối với người tiêu dùng:
 Tấn công các thiết bị IoT cho việc đào tiền ảo
 Trộm các thông tin ngân hàng
 Đánh cắp số thẻ tín dụng
 Hiển thị trang web giả mạo


Đối với doanh nghiệp:
 Tấn công các trang web thương mại điện tử
 Tấn công các nhà cung cấp bên thứ 3
 Formjacking attacks
 Phần mềm độc hại ảnh hưởng đến bộ định tuyến và mạng
Formjacking attacks là thuật ngữ mô tả việc sử dụng mã JavaScript độc hại để
đánh cắp chi tiết thẻ tín dụng và thông tin khác từ các hình thức thanh toán trên các
trang web thương mại điện tử. Formjacking không phải là một kỹ thuật mới, nhưng
các vụ tấn công gần đây có quy mô lớn, tinh vi và tăng lên đáng kể từ giữa tháng 8
năm 2018 [ CITATION sym18 \l 1066 ].

1.3. Một số lỗ hổng bảo mật web phổ biến
1.3.1. Tấn công XSS
Khái niệm
Cross-Site Scripting (XSS) tạm dịch là kịch bản liên trang, là một trong những
kĩ thuật tấn công phổ biến nhất hiện nay, đồng thời nó cũng là một trong những vấn
đề bảo mật quan trọng đối với các nhà phát triển web và cả những người sử dụng
web. Bất kì một website nào cho phép người sử dụng đăng thông tin mà không có sự
kiểm tra chặt chẽ các đoạn mã nguy hiểm thì đều có thể tiềm ẩn các lỗi XSS.
Lỗi này xảy ra khi ứng dụng web thu nhận các dữ liệu nguy hiểm được nhập từ
hacker. Họ có thể thông qua lỗi này để chèn code vào site hay link để lấy các thông
tin quan trọng từ nạn nhân. Các thông tin có thể lấy và thực hiện như: Cookie,
Keylogging, Phishing, …
Phòng chống XSS
Đối với các dữ liệu của người dùng chỉ nên:
 Chỉ chấp nhận những dữ liệu hợp lệ.
 Từ chối nhận các dữ liệu hỏng.
 Liên tục kiểm tra và thanh lọc dữ liệu.
Encode dưới dạng HTML các ký tự đặc biệt do client gửi đến bao gồm: <, >,
&, ’, ”, / trong các trường hợp:
 Dữ liệu client gửi lên máy chủ


 Dữ liệu lấy ra từ database khi trả về cho client
1.3.2. Tấn công CSRF
Khái niệm
Cross Site Request Forgery (CSRF) là kỹ thuật tấn công bằng cách sử dụng quyền
chứng thực của người dùng đối với một website. Kỹ thuật này tấn công vào người
dùng, dựa vào đó hacker có thể thực thi những thao tác phải yêu cầu sự chứng thực.
Đây là kỹ thuật tấn công dựa vào mượn quyền trái phép.
Hacker sử dụng phương pháp CSRF để lừa trình duyệt của người dùng gửi đi

các câu lệnh HTTP đến các ứng dụng web. Trong trường hợp phiên làm việc của
người dùng chưa hết hiệu lực thì các câu lệnh trên sẽ được thực hiện với quyền chứng
thực của người sử dụng.
Phòng chống CSRF
 Hạn chế thời gian tồn tại của session.
 Sử dụng GET và POST đúng cách. Dùng GET nếu thao tác là truy vấn dữ
liệu. Dùng POST nếu các thao tác tạo ra sự thay đổi hệ thống. Nếu ứng
dụng theo chuẩn RESTful, có thể dùng thêm các HTTP verbs, như PATCH,
PUT hay DELETE.
 Sử dụng token: Tạo ra một token tương ứng với mỗi form, token này sẽ là
duy nhất đối với mỗi form và thường thì hàm tạo ra token này sẽ nhận đối
số là "SESSION" hoặc được lưu thông tin trong SESSION, chèn thêm
token vào đường link thực hiện thao tác. Khi nhận lệnh HTTP POST về, hệ
thống sẽ thực hiên so khớp giá trị token này để quyết định có thực hiện hay
không. Mục đích của token là làm cho hacker không thể xác định được
chính xác đường link thực hiện thao tác.
 Chèn bước xác nhận trung gian trước những thao tác nhạy cảm: ví dụ như
sử dụng captcha, các thông báo xác nhận, yêu cầu nhập lại password hoặc
sử dụng thêm OTP (One-time password) hay chứng thư số để xác nhận lại
các giao dịch.
 Sử dụng cookie riêng biệt cho trang quản trị: Một cookie không thể dùng
chung cho các domain khác nhau, chính vì vậy việc sử dụng
"admin.site.com" thay vì sử dụng "site.com/admin" an toàn hơn.
 Kiểm tra REFERRER: Kiểm tra xem các câu lệnh HTTP gửi đến hệ thống
xuất phát từ đâu. Một ứng dụng web có thể hạn chế chỉ thực hiện các lệnh


HTTP gửi đến từ các trang đã được chứng thực. Tuy nhiên cách làm này có
nhiều hạn chế và không thật sự hiệu quả.
 Kiểm tra IP: Một số hệ thống quan trọng chỉ cho truy cập từ những IP được

thiết lập sẵn.
1.3.3. Tấn công SQL Injection
Khái niệm
SQL Injection là một kỹ thuật cho phép những kẻ tấn công lợi dụng lỗ hổng
của việc kiểm tra dữ liệu đầu vào trong các ứng dụng web và các thông báo lỗi của hệ
quản trị cơ sở dữ liệu (DBMS - Data Base Management System) trả về để inject (tiêm
vào) và thi hành các câu lệnh SQL một cách trái phép.
SQL Injection có thể cho phép những kẻ tấn công thực hiện các thao tác như
delete, insert,... trên cơ sở dữ liệu của ứng dụng, thậm chí là của server mà ứng dụng
đó đang chạy. Lỗi SQL Injection thường xảy ra trên các ứng dụng web có dữ liệu
được quản lý bằng DBMS như SQL Server, MySQL, Oracle, DB2…
Phòng chống SQL Injection
 Lọc dữ liệu từ người dùng: Cách phòng chống này tương tự như XSS. Sử
dụng filter để lọc các kí tự đặc biệt (; ” ‘) hoặc các từ khoá (SELECT,
UNION) do người dùng nhập vào. Nên sử dụng thư viện/function được
cung cấp bởi framework.
 Không cộng chuỗi để tạo SQL: Sử dụng parameter thay vì cộng chuỗi. Nếu
dữ liệu truyền vào không hợp lệ, SQL Engine sẽ tự động báo lỗi.
 Không hiển thị exception, thông báo lỗi rõ ràng: Hacker dựa vào thông báo
lỗi để tìm ra cấu trúc database. Khi có lỗi, chỉ hiện thông báo lỗi chung và
không nên hiển thị đầy đủ thông tin về lỗi, tránh hacker lợi dụng.
 Phân quyền rõ ràng trong cơ sở dữ liệu: Nếu chỉ truy cập dữ liệu từ một số
bảng, hãy tạo một account trong DB, gán quyền truy cập cho account đó
không dùng account root hay sa. Lúc này, dù hacker có inject được sql cũng
không thể đọc dữ liệu từ các bảng chính, sửa hay xoá dữ liệu.
 Sao lưu dữ liệu thường xuyên: Dữ liệu phải thường xuyên được backup để
nếu dữ liệu xoá hoặc hỏng thì vẫn có thể khôi phục được.


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

Khái niệm
Tấn công từ chối dịch vụ (hay còn gọi là DoS - Denial of Service) là một trong
những thủ đoạn nhằm ngăn cản những người dùng hợp pháp khả năng truy cập và sử
dụng vào một dịch vụ nào đó. DoS có thể làm ngưng hoạt động của một máy chủ,
một mạng nội bộ thậm chí cả một hệ thống mạng rất lớn. Về bản chất thực sự của
DoS, kẻ tấn công sẽ chiếm dụng một lượng lớn tài nguyên mạng như băng thông, bộ
nhớ... và làm mất khả năng xử lý các yêu cầu dịch vụ từ người dùng hợp lệ.
Phòng chống tấn công từ chối dịch vụ
 Giảm Timeout cho Server.
 Giới hạn số kết nối đến Server cho mỗi IP
 Cấu hình firewall để giới hạn số kết nối đến cổng 80 trên mỗi IP.
 Sử dụng dịch vụ chống tấn công DoS từ các công ty cung cấp giải pháp.
 Thực hiện cân bằng tải (load balancer), mạng phân phối nội dung (CDN)
kết hợp cả hai hoặc 1 trong 2.
 Quét mạng thường xuyên và theo dõi lưu lượng với các cảnh báo cũng có
thể giúp nắm bắt được những nguy cơ của một cuộc tấn công DoS sớm,
cũng như đưa ra những hành động để giảm thiểu thiệt hại.
1.3.5. Một số tấn công khác
Tấn công Path Traversal
Path Traversal, hay Directory Traversal là kỹ thuật tấn công nhằm vào việc truy
cập tới các file, thư mục nằm ngoài thư mục chính của web server. Tấn công này còn
được biết đến với các tên gọi khác như: dot dot slash (../), directory climbing,
backtracking. Điểm yếu cho phép thực hiện tấn công này là sự kém hiệu quả trong
việc kiểm tra, chuẩn hoá tên file mà người dùng yêu cầu trong truy vấn HTTP, khiến
cho kí hiệu “thư mục cha” (../) được chấp nhận.
Tấn công Content Spoofing
Tấn công giả mạo nội dung (Content Spoofing, hay còn gọi là tấn công giả mạo
dữ liệu): đây là dạng tấn công tương tự như XSS, nhưng thay vì chèn mã kịch bản thì
kẻ tấn công thực hiện chèn/sửa nội dung của webpage (phần mà người dùng nhìn



thấy trên màn hình) bị thay đổi so với nội dung gốc. Sự thay đổi này có thể rất nguy
hiểm.
1.4. Những yếu tố đảm bảo an toàn ứng dụng web
Ứng dụng web không thể tự thân nó hoạt động, mà chỉ có thể hoạt động trên
một môi trường nhất định. Tính an toàn của ứng dụng web không chỉ phụ thuộc vào
bản thân nó mà còn được quyết định bởi môi trường mà nó hoạt động. Theo mặc định
nó được xây dựng để hoạt động qua mạng. Do vậy, tính an toàn của ứng dụng web
phụ thuộc một phần vào tính chất kết nối mạng. Web client và web server có thể giao
tiếp với nhau qua mạng cục bộ (LAN), qua mạng diện rộng (WAN) hay qua mạng
dùng chung; kết nối mạng có thể là kết nối mở hay kết nối mạng riêng ảo (VPN). Tùy
thuộc vào tính chất của kết nối mà tính an toàn của ứng dụng web có thể bị đe dọa
bởi các tấn công: tấn công chặn bắt trên đường truyền, tấn công xuyên tạc dữ liệu, tấn
công xen vào (hay tấn công kẻ ở giữa), tấn công từ chối dịch vụ.
Ứng dụng web, dù ở phía server hay phía client, phải hoạt động trong môi
trường của một hệ điều hành nào đó. Nếu hệ điều hành có những lỗ hổng bảo mật cho
phép kẻ tấn công thâm nhập vào hệ thống các dữ liệu mà ứng dụng web bảo vệ có thể
bị lộ, bị sửa chữa hoặc bị phá hủy. Ở phía client, dữ liệu đó có thể là cookie được lưu
trữ dài hạn. Ở phía server, dữ liệu đó là bản thân mã nguồn của ứng dụng web, các tài
khoản được ứng dụng web sử dụng để truy cập cơ sở dữ liệu hay các dịch vụ khác,
thông tin về người dùng và các tài nguyên khác của website.
Mặc dù hoàn toàn có thể viết được ứng dụng web (phía server) tương tác trực
tiếp với hệ điều hành, nhưng thường thì ứng dụng web hoạt động thông qua một web
server nào đó như IIS, Apache. Khi đó, tính an toàn của ứng dụng web sẽ phụ thuộc
vào tính an toàn của web server.
Ngày nay việc xây dựng ứng dụng web lập trình CGI (Common Gateway
Interface - Giao diện cổng nối chung) hay ISAPI (Internet Server Application
Programming Interface – Giao diện lập trình ứng dụng máy chủ internet) và NSAPI
(Netscape Server Application Programming Interface - Giao diện lập trình ứng dụng
máy chủ Netscape) đã không còn được ưa chuộng; đa phần ứng dụng web trên

Internet được xây dựng bằng PHP và ASP/ASP.NET. Các ứng dụng web viết bằng
PHP hay ASP/ASP.NET không tương tác trực tiếp với web server mà thông qua một
ứng dụng trung gian, tạm gọi là bộ thông dịch (interpretor). Nhờ các bộ thông dịch
khác nhau mà một ứng dụng web (ví dụ viết bằng PHP) có thể làm việc với các web


server khác nhau (ví dụ Apache Và IIS) mà không cần thay đổi mã nguồn. Bản thân
PHP và ASP/ASP.NET cũng cung cấp cho các nhà phát triển web những hỗ trợ đáng
kể trong triển khai các chức năng an toàn, đặc biệt là chức năng lọc dữ liệu người
dùng. Và khi đó, tính an toàn của ứng dụng web lại phụ thuộc vào tính an toàn của
ứng dụng trung gian trên đây.
Ngoài ra, ứng dụng web phải sử dụng dữ liệu từ các nguồn khác nhau (từ cơ sở
dữ liệu, từ hệ thống tập tin, từ các website khác...) để thực hiện các chức năng theo
thiết kế. Tính an toàn của các nguồn dữ liệu trên đây phụ thuộc vào tính an toàn của
hệ thống quản lý chúng. Bên cạnh đó, bản thân các dữ liệu cũng có thể tiềm ẩn những
hiểm họa an toàn đối với ứng dụng web sử dụng dữ liệu.
Như vậy, xét về tổng thể tính an toàn của ứng dụng web phụ thuộc vào các
thành phần có liên quan trong môi trường mà ứng dụng web hoạt động. Để đảm bảo
an toàn ứng dụng web, cần phải đảm bảo an toàn cả từ phía các thành phần này.
1.5. Đánh giá an toàn ứng dụng web
Thực tế rất khó để có thể tạo được những website không có lỗ hổng bảo mật.
Khi phát triển website, cần xác định các hiểm họa an toàn, từ đó đề ra các cơ chế để
chống lại các hiểm họa đó. Tuy nhiên, các cơ chế an toàn không phải bao giờ cũng
được xây dựng một cách hoàn hảo.
Tổ chức phòng thủ ở các thiết bị mạng không chỉ giúp ngăn chặn mã độc xâm
nhập vào mạng bằng cách khai thác thông tin và lỗ hổng, mà còn giúp chủ động ngăn
cản những truy cập trái phép và không phù hợp vào hệ thống. Tuy nhiên, điều này
không giúp các ứng dụng web tránh khỏi các cuộc tấn công, tin tặc có thể tấn công
vào ứng dụng trước khi thực hiện tấn công vào hệ thống.
Do vậy, cần có phương pháp kiểm tra, đánh giá các nguy cơ bảo mật cơ bản

trên ứng dụng. OWASP (Open Web Application Security Project) được thực hiện với
mục tiêu đó.
Đánh giá điểm yếu ATTT trên ứng dụng Web
Quy trình đánh giá sử dụng phương thức theo chuẩn OWASP bao gồm các tháo
tác chính sau:
 Thu thập thông tin.
 Đánh giá cấu hình
 Đánh giá quản lý định danh
 Đánh giá quá trình xác thực








Đánh giá quá trình phân quyền
Đánh giá quản lý phiên
Đánh giá quá trình kiểm tra dữ liệu đầu vào
Đánh giá độ an toàn của mã hóa
Đánh giá hoạt động nghiệp vụ

Tấn công, thâm nhập thử hệ thống dựa trên các điểm yếu tìm kiếm được từ các
công cụ cũng như quá trình tìm kiếm thủ công.
Thực hiện đánh giá trên các ứng dụng web phổ biến: ASP, ASP.NET, PHP, JSP,

Thực hiện đánh giá trên các mã nguồn nền tảng ứng dụng phổ biến: Drupal,
Joomla, Dot Net Nuke,…
Thực hiện đánh giá thủ công với sự hỗ trợ bởi các công cụ hàng đầu trong tìm

kiếm, phát hiện điểm yếu ứng dụng web: HP WebInspect, IBM AppScan, Acunetix
Web Vulnerability Scanner.
Lập báo cáo, phân tích chi tiết điểm yếu: mức độ nguy hiểm, tác động tới hệ
thống.
Báo cáo theo chuẩn: PCI DSS (Payment Card Industry Data Security Standard
- chuẩn an ninh thông tin bắt buộc dành cho các doanh nghiệp lưu trữ, truyền tải và
xử lý thẻ thanh toán),…
Đưa ra khuyến nghị khắc phục điểm yếu.
1.6. Tổng kết chương
Nội dung chương này trình bày tổng quan về ứng dụng web, các lỗ hổng và
vấn đề an toàn. Bao gồm các mô hình hoạt động, các nguy cơ mất an toàn hiện nay.
Các hệ lỗ hổng phổ biến có từ lâu nhưng vẫn tồn tại cho đến nay kèm theo một số lỗ
hổng mới. Ngoài ra, trong chương còn tìm hiểu thêm về những yếu tố đảm bảo an
toàn trong ứng dụng web và cách đánh giá một ứng dụng web có đạt chuẩn, đủ tiêu
chuẩn an toàn bảo mật hay không.


×