Đây là đồ án nói về 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, đồ án nêu đầy đủ và chi tiết. Nếu có nhu cầu mua source code liên hệ l19htm4ngmail.com để mua trọn bộ đồ án nhé.
Trang 1BAN 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
Trang 2PHƯƠNG PHÁP ĐẢM BẢO AN TOÀN THEO KỸ NGHỆ
HƯỚNG YÊU CẦU TRONG PHÁT TRIỂN WEB
Trang 3Ngành: An toàn thông tin
Trang 4MỤ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
Trang 52.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
Trang 63.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
Trang 7DANH MỤC TỪ VIẾT TẮT
CSRF Cross-site Request Forgery Lỗ hổng bảo mật
MVC Model – view – controller
ORM Object Relational Mapping Kỹ thuật chuyển đổi dữ liệu
giữa các hệ thống khácOWASP Open Web Application Security
Project
Một tổ chức phi lợi nhuận
PDO PHP Data Objects Lớp truy xuất cơ sở dữ liệuSDLC Software Development Life
Cycle
Quy trình phát triển phầnmềm
VPN Virtual Private Network Mạng dành riêng
WDLC Web development life cycle Vòng đời phát triển web
Trang 8DANH 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
Trang 9DANH 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
Trang 10LỜ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épnhư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
Trang 11LỜ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à truycập internet tăng lên từng ngày Trong thời đại ngày nay internet đã trở nên rất quenthuộ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áchoạt động kinh doanh, mua bán và quản lý Tất cả đã kéo theo sự phát triển khôngngừ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ànthông tin cho ứng dụng web, thông tin của người sử dụng Các khái niệm chuyênmô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ệuchuyê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ũngxuấ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 ứngdụ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 đadạ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ị, hayngườ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ìmhiể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òngtrá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 quytrì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ộtwebsite 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ácchươ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
Trang 12phục, phòng tránh Từ đó xác định ra những yếu tố đảm bảo một ứng dụng web antoà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 quytrì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êucầ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ạndự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ầubảo mật cơ bản theo từng giai đoạn
Trang 13CHƯƠ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ầnmềm theo mong muốn và nhu cầu của người sử dụng Thông qua ứng dụng webngườ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 đầuvớ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ửithô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ợpvớ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ớiquy mô lớn Nó chủ yếu được sử dụng để chạy các dự án thử nghiệm, dự án nhỏ, tìmhiể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
Trang 14Để mở rộng máy chủ web theo chiều ngang, cần phải chạy cơ sở dữ liệu trênmộ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àycòn được gọi là “kiến trúc không trạng thái (stateless architecture)” Kiến trúc khôngtrạ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áctham 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” serverkhô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ốthơ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ìnhnà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ặcphân phối dữ liệu đồng đều giữa chúng Trong trường hợp đầu tiên, thường khôngcầ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ệukhá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ôngnghiệ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ôngnghệ thông tin của tổ chức nếu không được xử lý đúng cách Sự phát triển nhanhchó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ứctạp hơn và khó bảo mật hơn
Trang 15Trong 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áykhá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 chungcủ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, saoché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 giaothứ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ộidung 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ănghơ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 SiteScripting) vẫn là lỗ hổng phổ biến và nguy hiểm nhất trên thế giới, càng nhiềuwebsite xây dựng trên javascript khiến lỗ hổng XSS càng trở lên phổ biến Việc cậpnhậ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ộtnề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ướngcầ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 anninh 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ằmtá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
Trang 16tin 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.000người dùng Google+ bị công bố Google buộc phải đóng cửa vĩnh viễn mạng xã hộinày [ CITATION Min19 \l 1066 ]
Trang 17c 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áchà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ệuPanama, 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ùngphát theo cấp số nhân nhờ vào khả năng đăng bài trên các nhóm (group) có đôngngười tham gia
Đến nay đã có 45.000 máy tính [ CITATION BT19 \l 1066 ] là nạn nhân củadò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ácnhằ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ướckhi đượ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ềuhà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êntoà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ântạ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
Trang 18 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ỉ emailmới Cảnh báo về rủi ro bảo mật tiềm ẩn và sự đánh đổi khi chấp nhậncung 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.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óttrong 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ụctiê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:
Trang 19 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áctrang web thương mại điện tử Formjacking không phải là một kỹ thuật mới, nhưngcá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 8nă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ụngweb 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,
Trang 20 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ềnchứ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ườidù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 đicá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ủangườ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ứngthự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 ứngdụ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êmtoken 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 haykhông Mục đích của token là làm cho hacker không thể xác định đượcchí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
Trang 21sử dụng thêm OTP (One-time password) hay chứng thư số để xác nhận lạicác giao dịch.
Sử dụng cookie riêng biệt cho trang quản trị: Một cookie không thể dùngchung 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ốngxuất phát từ đâu Một ứng dụng web có thể hạn chế chỉ thực hiện các lệnhHTTP 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 đượcthiế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ổngcủ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êmvà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 đượccung 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
Trang 22 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ũngkhô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
Trang 231.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 trongnhữ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ủaDoS, 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ệctruy 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àycò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ả trongviệ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ếncho 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
Trang 24thấ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 nguyhiể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ênmộ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àobả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 webphụ 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ể giaotiếp với nhau qua mạng cục bộ (LAN), qua mạng diện rộng (WAN) hay qua mạngdù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ùythuộ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ọabở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ấncô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ôitrườ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 chophé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ưutrữ 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àikhoả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ựctiế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 webserver nào đó như IIS, Apache Khi đó, tính an toàn của ứng dụng web sẽ phụ thuộcvà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 GatewayInterface - Giao diện cổng nối chung) hay ISAPI (Internet Server ApplicationProgramming 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ụngmáy chủ Netscape) đã không còn được ưa chuộng; đa phần ứng dụng web trênInternet được xây dựng bằng PHP và ASP/ASP.NET Các ứng dụng web viết bằngPHP 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ịchkhá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
Trang 25server khác nhau (ví dụ Apache Và IIS) mà không cần thay đổi mã nguồn Bản thânPHP 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ườidù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 theothiế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ữnghiể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ácthà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âmnhậ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ăncả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àykhô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ôngvà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ảntrên ứng dụng OWASP (Open Web Application Security Project) được thực hiện vớimụ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ácthá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
Trang 26 Đá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áccô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ìmkiếm, phát hiện điểm yếu ứng dụng web: HP WebInspect, IBM AppScan, AcunetixWeb 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à
Trang 27CHƯƠNG 2: ĐẢM BẢO AN TOÀN TRONG PHÁT TRIỂN WEB THEO
KỸ NGHỆ HƯỚNG YÊU CẦU
2.1 Quy trình phát triển web theo kỹ nghệ hướng yêu cầu
Phát triển trang web là một quá trình toàn diện bao gồm các bước thiết yếu cầnphải được tuân theo Nhưng cũng không có một số bước cụ thể vì nó có thể thay đổitùy thuộc vào khách hàng hoặc nhà phát triển, cơ bản quy trình khá giống nhau
Hình 2.1 Quy trình phát triển ứng dụng web
Quy trình phát triển ứng dụng web được thể hiện bao gồm các bước cần thiếtnhư Hình 2.1 được thực hiện từ đầu đến cuối để hoàn thành một dự án Nó phân chia
và phân loại công việc cụ thể, sau đó chia các phần thành nhiệm vụ, tài nguyên có thểđược sử dụng làm bản hướng dẫn cho mỗi dự án
Có rất nhiều bước trong quy trình thiết kế và phát triển trang web Từ việc thuthập thông tin ban đầu, đến việc tạo trang web và cuối cùng là bảo trì để giữ chotrang web luôn cập nhật
Quá trình chính xác sẽ thay đổi một chút từ thiết kế đến phát triển, nhưngnhững bước cơ bản bao gồm:
Thu thập thông tin và xác định yêu cầu
Lập kế hoạch
Thiết kế
Phát triển
Kiểm tra
Trang 28 Triển khai và bảo trì
2.1.1 Thu thập thông tin và xác định yêu cầu
Cũng giống như bất kỳ dự án nào khác, bước đầu tiên của việc phát triển mộttrang web là thu thập tất cả các thông tin cần thiết Tất cả các yêu cầu cần phải làm rõkhi bắt đầu dự án nếu không toàn bộ dự án có thể đi sai hướng
Tất cả các thông tin liên quan thu thập từ khách hàng mục đích tạo ra sản phẩmtheo mong đợi của họ Bất kỳ vấn đề nào trong gia đoạn này cũng phải được giảiquyết ngay vì nó quyết định các bước tiếp theo sẽ như thế nào
Giai đoạn này sẽ xác định các mục tiêu chính Khi thu thập thông tin, cầnnghiên cứu mọi thứ để hiểu rõ về các yêu cầu, mục tiêu của ứng dụng web Theo cáchnày sẽ dễ dàng hơn trong việc phát triển, lên kế hoạch phù hợp để phát triển ứng dụngweb Sau khi thu thập yêu cầu hoàn tất, tiếp theo là lập kế hoạch, phân tích để kiểmtra tính khả thi của dự án
Vì vậy, lập kế hoạch phù hợp rất quan trọng, giúp thu thập thông tin dễ dàng hơn rấtnhiều Đây là lúc xác định mục đích và mục tiêu chính của ứng dụng web đang xâydựng, các kế hoạch trong tương lai cũng như đối tượng mục tiêu hướng tới
Khi kế hoạch phát triển ứng dụng web được mô tả kỹ lưỡng và chi tiết, sẽ giúptránh khỏi các tài nguyên bị lãng phí trong tương lai do các sự cố không mong muốnnhư thay đổi thiết kế, thêm tính năng khác không có trước đó
2.1.3 Phân tích, thiết kế
Phân tích là một tập hợp các hoạt động trong đó các nhà phân tích thu thập cácyêu cầu thông tin của người dùng, phân tích chúng một cách có hệ thống dưới dạng
Trang 29chức năng của hệ thống ứng dụng, yêu cầu dữ liệu đầu vào từ người dùng, dữ liệuđầu ra và yêu cầu hiển thị của họ.
Thu thập dữ liệu về sự kỳ vọng hiệu suất hoạt động website đối với ngườidùng, chẳng hạn như thời gian phản hồi mỗi lần gửi yêu cầu
Các bước được thực hiện trong giai đoạn phân tích của WDLC:
1 Xác định các tác vụ phía người dùng cần phải hoàn thành trong giai đoạnnày, xem xét các yêu cầu nào của người phù hợp từ đó xác định các chức năng nênlàm Với sự giúp đỡ của giai đoạn thu thập dữ liệu, các tác vụ khác nhau được xácđịnh để có được đầu ra thích hợp
2 Xem xét các quy trình cần thiết để hỗ trợ các tính năng trang web sau khixác định tất cả các tác vụ, phải tập trung vào tất cả các tác vụ đó vì nó là cơ sở pháttriển trang web Các quy trình cần thiết để hỗ trợ các tính năng trang web là xác định(sitemap) bản đồ trang web, xác định cấu trúc trang, hoàn thiện các nội dung được đặttrên trang web
3 Một trong những giai đoạn quan trọng trong WDLC
Vì quy trình phân tích rất quan trọng để đảm bảo rằng hệ thống được đề xuất
sở hữu tất cả các tính năng và dữ liệu cần thiết mà người dùng đang tìm kiếm Nếugiai đoạn phân tích bị sai sẽ không thể đảm bảo chất lượng và đầu ra của hệ thốngmong muốn và đó là lý do phân tích là một trong những giai đoạn quan trọng củaWDLC
Đối tượng mục tiêu là một trong những yếu tố quan trọng được xem xét Từngloại đối tượng sẽ có những giao diện được thiết kế khác nhau Người thiết kế sẽ tạomột hoặc nhiều thiết kế nguyên mẫu cho trang web Đây thường là một hình ảnh vềthiết kế cuối cùng sẽ trông như thế nào
Người thiết kế sẽ cho xem các kết quả dự án trong suốt các giai đoạn thiết kế
và phát triển Lý do quan trọng nhất cho việc này là khách hàng có thể đưa ra nhữngđiều hài lòng và không hài lòng trên thiết kế trang web
Trong giai đoạn này, giao tiếp giữa khách và người thiết kế rất quan trọng vìphải đảm bảo rằng trang web cuối cùng sẽ phù hợp với nhu cầu và mục đích đề ra.Điều quan trọng là phải làm việc chặt chẽ với người thiết kế, trao đổi ý tưởng cho đếnkhi đi đến thiết kế cuối cùng
2.1.4 Lập trình
Trang 30Trong giai đoạn lập trình này, các lập trình viên chuyển đổi các yếu tố đồ họađược thiết kế cho nguyên mẫu thành một trang web thực tế, có chức năng Thôngthường, trang chủ được tạo ra đầu tiên, và sau đó tất cả trang phụ được thêm vào,theo hệ thống phân cấp trang web mà trước đó đã được tạo ra dưới hình thức mộtsitemap.
Toàn bộ thời gian này, nhà thiết kế nên tiếp tục cung cấp bản mẫu trang webđang thực hiện để có thể thay đổi hoặc chỉnh sửa bổ sung sao cho phù hợp
2.1.5 Kiểm thử
Kiểm thử là giai đoạn quan trọng trong phát triển web trước khi bàn giao.Trong quá trình thử nghiệm, người kiểm tra bắt đầu kiểm tra hệ thống theo các yêucầu đề ra trước đó Họ kiểm thử nhằm tìm ra các lỗi, lỗ hổng trong hệ thống cũng nhưxác minh xem ứng dụng có hoạt động như mong đợi hay không Có làm tốt theonhững gì yêu cầu ghi lại trong giai đoạn phân tích yêu cầu Người kiểm thử thực hiệntừng kiểm tra và xác minh kết quả hoặc sử dụng kiểm tra thăm dò, đó là cách tiếp cậndựa trên kinh nghiệm
Nếu có lỗi, người kiểm thử thông báo cho lập trình viên về chi tiết của sự cố.Nếu đó là lỗi đúng thì họ sẽ sửa và tạo phiên bản mới cho trang web và cần xác minhlại Chu trình này được lặp lại cho đến khi tất cả các yêu cầu đã được kiểm tra và cáclỗi đã được sửa chữa Khi đó website đã sẵn sàng triển khai
2.1.6 Triển khai và bảo trì
Sau khi chính thức được phê duyệt, các tập mã nguồn ứng dụng web sẽ đượctải lên máy chủ, sau đó ứng dụng web sẽ được công khai trực tiếp đến người dùng
Giai đoạn cuối cùng trong phát triển là bảo trì Một trang web tập trung vào cácdịch vụ hơn là sản phẩm Đó là lý do tại sao việc cung cấp trang web cho người dùngthôi là chưa đủ; phải đảm bảo rằng mọi thứ đều hoạt động tốt cho người dùng Tương
tự như vậy, nên chuẩn bị nghiệp vụ để thực hiện các thay đổi, bảo trì cần thiết khi cónhu cầu
Thông qua hệ thống phản hồi, hệ thống ghi logs, có thể xác định các vấn đề màngười dùng cuối gặp phải Việc này cần chú ý khắc phục sự cố trong thời gian sớmnhất, nếu không người dùng sẽ dễ dàng từ bỏ trang web
2.2 An toàn trong giai đoạn xác định, phân tích yêu cầu
Trang 31Ngày nay, các mối đe dọa bảo mật mới đang nổi lên với tốc độ theo cấp sốnhân, vì vậy tài nguyên, bao gồm cả dữ liệu và hệ thống phải được bảo vệ Trong môitrường hiện tại, ứng dụng web được coi là mục tiêu chính trong các vụ tấn công bảomật Cần áp dụng và thực hiện các quy trình và kiểm soát khác nhau để đảm bảo nó
có sự bảo vệ trong quá trình xây dựng và phát triển Để từ đó chống lại các cuộc tấncông bảo mật và phải đáp ứng một bộ yêu cầu bảo mật được xác định
Trong vòng đời phát triển phần mềm truyền thống, trong một thời gian dài bảomật thường bị xem nhẹ hoặc bị bỏ qua Nó thường được xem xét ở cuối giai đoạn thửnghiệm hoặc trong giai đoạn xem lại, khi ứng dụng web hoàn chỉnh thiết kế và xâydựng Nhưng ngày nay, kịch bản đã được thay đổi, bảo mật được coi là một trongnhững yêu cầu nghiệp vụ quan trọng và các tổ chức đang áp dụng các quy trình vàphương pháp đảm bảo bảo mật ngay từ đầu, từ chính giai đoạn yêu cầu, nơi diễn racác yêu cầu bảo mật và phát triển các phương pháp bảo đảm an ninh
Từ mong muốn bảo mật, tài liệu yêu cầu cũng cần làm rõ các yêu cầu bảo mậtsản phẩm hợp lý, có tính thực tiễn và bất kỳ quy định cụ thể nào được tuân theo theokịch bản triển khai Tài liệu này nên cung cấp định nghĩa và yêu cầu chất lượng bảomật, để đảm bảo yêu cầu bảo mật có thể được thực hiện
Xây dựng danh sách kiểm tra bảo mật là một nhiệm vụ đầy thách thức, vì đặcđiểm kỹ thuật sản phẩm có thể khác nhau đối với môi trường triển khai và môi trườngkiểm thử tiêu chuẩn Nhìn rộng ra, phân loại nội dung kiểm tra bảo mật đáp ứng 3yêu cầu bảo mật ứng dụng web Yêu cầu cốt lõi, yêu cầu chung, yêu cầu hoạt động
2.2.1 Yêu cầu bảo mật cốt lõi
Ba khái niệm bảo mật cơ bản quan trọng thông tin trên internet là tính bí mật,tính toàn vẹn và tính khả dụng Các khái niệm liên quan đến người sử dụng thông tin
là xác thực, uỷ quyền và chống chối bỏ Nó là các yêu cầu bảo mật cốt lõi mà mọi sảnphẩm, ứng dụng cần kiểm soát bảo mật được xác định
a Tính bí mật
Yêu cầu bảo mật giải quyết vấn đề lộ dữ liệu nhạy cảm gây ra bởi các cá nhân
sử dụng và truy cập trái phép Cần xem xét các biện pháp kiểm soát để đảm bảo tínhbảo mật khi dữ liệu ở trạng thái không sử dụng và khi nó được xử lý Các quy trìnhnhư Encryption (mã hoá thông tin), Steganography (che giấu sự tồn tại của thông tin),Masking (thay thế hoặc đảo thông tin theo luật được thiết lập), hỗ trợ bảo mật dữ
Trang 32liệu và bảo mật quy trình Danh sách kiểm tra bảo mật phải chứa các thông số kỹthuật cần thiết để thực hiện các giao thức như: giao thức sử dụng, độ mạnh mã hóa,
sử dụng các quy trình đảm bảo tính bảo mật như trình tạo số ngẫu nhiên,
b Tính toàn vẹn
Yêu cầu về tính toàn vẹn rất cần thiết để đảm bảo độ tin cậy và độ chính xáccủa thông tin Độ tin cậy có thể được đảm bảo bằng cách kiểm tra chức năng ứngdụng, độ chính xác có thể được đảm bảo bằng cách kiểm tra dữ liệu được sửa đổi bởingười được ủy quyền theo cách được ủy quyền Đảm bảo rằng dữ liệu được xử lý làhoàn chỉnh và nhất quán Thực hiện các kiểm soát bảo mật như băm, chữ ký số hỗ trợđảm bảo tính toàn vẹn Các thông số kỹ thuật như giao thức, độ mạnh dữ liệu ngẫunhiên nên được coi như là một phần của danh sách yêu cầu kiểm tra bảo mật
c Tính khả dụng
Yêu cầu khả dụng đảm bảo chống phá hủy thông tin không mong muốn hoặcgián đoạn dịch vụ Đây là những yêu cầu khó khăn và cần được ghi nhận như là mộtphần của các thành phần thỏa thuận chất lượng dịch vụ (SLA - Service LevelAgreement) như đo lường thời gian ngừng hoạt động tối đa có thể chịu được (MTD -Measure Time Down) và thời gian phục hồi (RTO - Recovery Time Object)
Bảng yêu cầu cũng nên chứa các biện pháp để xác định và phân tích nghiệp vụ.Các biện pháp này cần có trong cả hai định lượng (chi phí để sửa chữa/khôi phục,nghĩa vụ pháp lý) và chất lượng
d Tính xác thực
Xác thực là đảm bảo tất cả tính hợp pháp và tính hợp lệ của người được xácthực Tài liệu yêu cầu cần xác định rõ các yêu cầu xác thực như sử dụng phương phápnào:
Digest: Thông tin xác thực (đăng nhập) được mã hóa bằng cách áp dụnghàm băm cho tên tài khoản, mật khẩu Ngăn chặn được việc giải mã
Token: Sử dụng một đoạn mã tạo ngẫu nhiên hoặc được sinh ra theo cơchế nào đó
Smart Card: Một loại thẻ thông minh có gắn chip chứa thông tin xácthực
Trang 33 Biometric: Sinh trắc học là công nghệ sử dụng những thuộc tính vật lý,đặc điểm sinh học riêng của mỗi cá nhân như vân tay, mống mắt, khuônmặt để nhận diện.
Cơ chế xác thực hai yếu tố
Nó quan trọng cho việc xác nhận rằng các bên liên quan biết họ là ai trong hệthống
e Tính ủy quyền
Cho phép xác định quyền được gán cho tất cả các thực thể được xác thực.Danh sách kiểm tra bảo mật nên nêu rõ các cách truy cập sẽ được cấp dựa trên vai tròhoặc quy tắc cùng với độ chi tiết của chúng, thực hiện các đặc quyền tối thiểu, uỷquyền dịch vụ
f Tính chống chối bỏ
Chống chối bỏ là việc ghi lại tất cả hành động của người dùng và hoạt độngnhư kiểm soát ngầm Nó giúp phát hiện khi người dùng trái phép thực hiện thay đổihoặc khi người dùng được ủy quyền thực hiện thay đổi trái phép Thông số yêu cầubảo mật cần xác định rõ các yêu cầu ghi nhật ký và kiểm tra How (cách nào), what(cái gì), when (khi nào) để nắm bắt theo tiêu chuẩn an ninh và thực tiễn tốt nhất Nócũng nên xác định nhu cầu lưu trữ, thay phiên và xử lý giống nhau
2.2.2 Yêu cầu bảo mật chung
Từ viễn cảnh bảo mật ứng dụng/phần mềm, các yêu cầu bảo mật chung sẽ nắmbắt được các nhu cầu quản lý phiên, lỗi và cấu hình phù hợp
a Quản lý phiên
Phiên được sử dụng để duy trì trạng thái Khi người dùng xác thực thành công,phiên xác định (ID) được cấp để theo dõi trạng thái đã xác thực Điều này bắt buộckhi giao dịch với giao thức không trạng thái như HTTP Danh sách yêu cầu bảo mậtcần nắm bắt các phương pháp và biện pháp cần thiết cho phiên an toàn Các yêu cầuxác định tính duy nhất và tính ngẫu nhiên của phiên (không thể đoán được và khôngthể dò được), phiên phải có thời hạn tối đa và không thể tái sử dụng,…
b Quản lý lỗi
Trong ứng dụng, việc hiển thị lỗi là một phần của quá trình sử dụng thôngthường khi gặp phải bất kỳ điều kiện không mong muốn hoặc không có phạm vi nào
Trang 34Từ viễn cảnh bảo mật, nên xác định rõ mức độ hiển thị thông tin cảnh báo lỗi thế nàotrong các tình huống lỗi để tránh các mối đe dọa như tiết lộ các thông tin kiến trúc,thiết kế và cấu hình ứng dụng nội bộ.
Trang 35c Quản lý cấu hình
Cấu hình tính năng và chức năng ứng dụng Các biện pháp cụ thể cần được xácđịnh để tránh rò rỉ dữ liệu nhạy cảm và bảo mật Như khởi tạo và xử lý GlobalVariables (biến toàn cục), Hashing/Encryption (mã hoá) dữ liệu nhạy cảm, nênđược xác định rõ ràng giống nhau
2.2.3 Yêu cầu khi hoạt động
Khi ứng dụng được xây dựng và triển khai, tính bảo mật cũng cần được xemxét khi hoạt động trong mọi môi trường để tránh tiết lộ hoặc rò rỉ thông tin nhạy cảmkhông mong muốn
a Môi trường triển khai
Danh sách yêu cầu bảo mật sẽ nắm bắt thông tin về môi trường ứng dụng sẽđược triển khai và ai sẽ sử dụng Tuân thủ các yêu cầu về môi trường và kiến trúcchuẩn được thúc đẩy với thông tin này
b Lưu trữ
Lưu trữ cần thiết để đảm bảo tính liên tục trong nghiệp vụ, các yêu cầu quyđịnh và chính sách tổ chức Điều quan trọng là phải nắm bắt các yêu cầu lưu trữ tuânthủ chính sách và quy định của tổ chức Các biện pháp như Where (loại phương tiện)
và How (trực tuyến / ngoại tuyến, định dạng, mã hóa) dữ liệu sẽ được lưu trữ, chínhsách truy xuất dữ liệu, nên xác định rõ ràng như một phần của bảng yêu cầu
c Chống vi phạm bản quyền
Đây là một phần của yêu cầu thương mại ngoài thị trường Nó bao gồm cơ chếCode Obfuscation (rối mã), Signing (chữ ký), Anti Tampering (chống giả mạo),Licensing (cấp phép), IP Protection (bảo vệ IP) Yêu cầu này cần được giải quyết rõràng trong tập yêu cầu để tránh mọi vấn đề pháp lý trong tương lai
Các quy định và tuân thủ quốc tế cũng cần được thảo luận và nắm bắt như làmột phần của thu thập yêu cầu bảo mật
2.2.4 Kết luận
Từ đó có thể hình dung rằng yêu cầu bảo mật rất quan trọng trong quá trìnhphát triển ứng dụng web Chi phí thực hiện kiểm soát an ninh hoặc đo lường đượcxác định trong giai đoạn này sẽ không đáng kể đối với quy trình làm việc Nếu bất kỳ
lỗ hổng hoặc yêu cầu nào như vậy được phát hiện trong giai đoạn sau sẽ tốn chi phí
Trang 36và thời gian hơn rất nhiều Phân tích yêu cầu là một giai đoạn không nên đánh giáthấp vì nó sẽ đặt nền tảng xây dựng cho cả dự án.
2.3 An toàn trong giai đoạn thiết kế
Hầu hết các lỗi bảo mật được sinh ra trong quá trình xây dựng, nơi kế hoạchsản phẩm được chuyển đổi thành chức năng thực tế Những hạng mục triển khai mấtnhiều chi phí nhất là những thứ được giới thiệu trong giai đoạn thiết kế do sự thiếuhiểu biết về các biện pháp bảo mật trong kiến trúc sản phẩm, ví dụ khi xem xét việctriển khai công nghệ và kiểm soát không chính xác hoặc không đầy đủ dẫn đến mấtnhiều chi phí về sau
2.3.1 Giai đoạn thiết kế an toàn
Giai đoạn thiết kế thường được định nghĩa là tập hợp các hành động chuyểncác yêu cầu chi tiết sản phẩm thành các thiết kế hoàn chỉnh Giai đoạn này tập trungvào cách cung cấp chức năng cần thiết và đóng vai trò hướng dẫn cho giai đoạn thựcthi và xây dựng Từ viễn cảnh bảo mật, nó đòi hỏi sự hiểu biết về các tài nguyên cầnđược bảo vệ, môi trường triển khai, luồng dữ liệu, người dùng sẽ truy cập vào tàinguyên nào và các nơi có thể bị tấn công Một cách tiếp cận chủ động chú ý đến bảomật trong giai đoạn thiết kế sẽ ngăn chặn việc phải thiết kế lại gây tốn kém và manglại lợi ích đáng kể trong tất cả các giai đoạn sau của vòng đời phát triển ứng dụng
Thiết kế đảm bảo an toàn là một bước đầy thách thức và phải thực sự cẩn thận,
có mục tiêu rõ ràng Các mục tiêu này có thể xác định bằng cách tuân theo cácnguyên tắc về thiết kế an toàn, cân nhắc và xem xét nơi dễ bị tấn công và thực hiện
mô hình hoá mối đe dọa để phân tích và tối ưu hóa giảm thiểu rủi ro
2.3.2 Lợi ích đem lại
a Giảm chi phí liên quan đến phát hiện và quản lý mối đe dọa
Việc thực hiện kiểm soát bảo mật có tác động tới chi phí và lập lịch kiểm trasản phẩm Áp dụng các biện pháp thiết kế an toàn sẽ giảm tương đối chi phí tới cáctác động tiêu cực, vấn đề bảo mật để khắc phục các lỗ hổng này
Chi phí sửa chữa các lỗ hổng được tính toán cao gấp 30 lần [CITATION Mic \l
1066 ] chi phí để sửa các lỗ hổng này ở giai đoạn thiết kế theo tài liệu Do đó giảmtổng chi phí phát triển ứng dụng
Trang 37b Thiết kế đơn giản và nhất quán
Khi ứng dụng được phát triển với mục đích bảo mật, sẽ có ít nhất 1 lần phảithiết kế lại nó Việc thiết kế đơn giản, nhất quán sẽ làm giảm cơ hội thiết kế lại ứngdụng một lần nữa Nếu thiết kế được thực hiện ở giai đoạn đầu, sử dụng các tiêuchuẩn cho thiết kế kiến trúc sẽ làm quá trình trở nên nhất quán hơn
c Đảm bảo phòng thủ chiều sâu
Giúp đảm bảo phòng thủ theo chiều sâu bằng cách đảm bảo nhiều lớp kiểmsoát an ninh ở giai đoạn trước và cung cấp dự phòng trong trường hợp có bất kỳ cuộctấn công dễ bị tổn thương nào khác
d Tăng độ tin cậy, ứng dụng ít bị tấn công
Bằng cách nêu lên tính bảo mật trong giai đoạn thiết kế, sẽ tăng độ tin cậy vàlàm cho nó ít bị tấn công hơn Khi biết rằng ứng dụng đã được thiết kế an toàn và gầnnhư tất cả các lỗ hổng đã được kiểm tra và khắc phục Vì vậy, có rất ít cơ hội tấncông Nó cũng làm cho ứng dụng dễ dàng bảo trì
e Lỗ hổng logic nghiệp vụ cũng có thể được giải quyết
Lỗ hổng logic nghiệp vụ cho phép kẻ tấn công sử dụng sai ứng dụng sai cáchbằng cách tìm ra những lỗ hổng trong quy tắc nghiệp vụ Nhà phát triển có thể giảiquyết các lỗi này ở giai đoạn thiết kế và có thể triển khai bảo mật để có thể ngăn chặn
kẻ tấn công lợi dụng như vậy
f Hỗ trợ phát hiện các vấn đề về kiến trúc và triển khai
Trong giai đoạn thiết kế, việc code chưa được thực hiện, các nhà phát triểnquan tâm nhiều hơn đến thiết kế liên quan đến đảm bảo ứng dụng an toàn Mô hình
đe dọa và xem xét thiết kế kiến trúc an toàn sẽ giúp phát hiện các lỗi kiến trúc và cácvấn đề triển khai
g Hỗ trợ các nhà phát triển thực hiện hợp lý hóa
Nếu thiết kế an toàn được thực hiện đúng cách thì các nhà phát triển sẽ có được
sự tự tin trong việc hợp lý hóa an toàn vào giai đoạn thực hiện tiếp theo
2.3.3 Thực tiễn việc thiết kế an toàn
Có một số quy trình nhất định mà người ta có thể sử dụng để áp dụng thiết kế
an toàn trong quy trình phát triển ứng dụng:
Trang 38 Attack Surface Evaluation (Đánh giá bề mặt tấn công)
Threat Modeling (Mô hình đe doạ)
a Đánh giá bề mặt tấn công
Bề mặt tấn công là thước đo của tất cả các điểm khác nhau được khai thác bởicác tác nhân đe dọa Cố gắng liệt kê danh sách các tính năng mà kẻ tấn công sẽ có thể
cố gắng khai thác
b Mối đe doạ mẫu
Mô hình mối đe dọa là một kỹ thuật có hệ thống, lặp đi lặp lại và có cấu trúc đểtrực quan hóa tất cả các tình huống đe dọa có thể có trong thiết kế Và sau đó xácđịnh các biện pháp khắc phục để ngăn chặn hoặc giảm thiểu tác động của các mối đedọa đối với hệ thống
Mô hình hóa mối đe dọa cho phép các nhóm phát triển dự đoán các cuộc tấncông bằng cách hiểu cách kẻ thù chọn mục tiêu (tài nguyên), định vị các lỗ hổng thiết
kế trong đầu vào và tiến hành cuộc tấn công Một mô hình mối đe dọa được triển khaitốt sẽ xác định các tài nguyên cần được bảo vệ, các mối đe dọa đối với các tài nguyênnày là gì Các cuộc tấn công có thể được sử dụng, trong những điều kiện nào cáccuộc tấn công sẽ thành công Từ đó có biện pháp phòng vệ, sửa lỗi phù hợp
2.4 An toàn trong giai đoạn lập trình
2.4.1 Giảm thiêu rủi ro trong quá trình code
a Xác thực đầu vào
Luôn luôn xác thực dữ liệu đầu vào Xác thực từ tất cả các nguồn dữ liệukhông đáng tin cậy Khi làm tốt việc xác thực nguồn dữ liệu đầu vào có thể loại bỏphần lớn các lỗ hổng ứng dụng web Luôn nghi ngờ và phải lường trước hầu hết cácnguồn dữ liệu từ bên ngoài, bao gồm các tham số truyền vào, giao diện mạng, biếnmôi trường và tệp do người dùng tải lên
b Cảnh báo trình biên dịch
Biên dịch code với mức cảnh báo cao nhất, thường có sẵn trong trình biên dịchcủa IDE Nếu gặp bất kì cảnh báo, thông báo lỗi nào cần tiến hành sửa ngay đoạncode xử lý đó Sử dụng các công cụ phân tích tĩnh và động để phát hiện và loại bỏ cáclỗi bảo mật Phân tích tĩnh là phương pháp phân tích, kiểm tra các ứng dụng độc hại
Trang 39mà không cần chạy chúng Phân tích động là phương pháp mà ứng dụng độc hại sẽđược chạy lên trong quá trình phân tích.
Trang 40c Thực thi code theo chính sách, thiết kế bảo mật
Xây dựng website thực thi theo các chính sách bảo mật sẽ giảm thiểu được lỗi
và đáp ứng được các yêu cầu bảo mật của giai đoạn thiết kế Ví dụ: nếu hệ thống yêucầu các đặc quyền khác nhau vào các thời điểm khác nhau, cần xem xét việc chia hệthống thành các hệ thống con liên thông riêng biệt, mỗi hệ thống có một đặc quyềnphù hợp
d Code sạch, dễ duy trì
Code cần đơn giản và ngắn gọn, dễ đọc và dễ hiểu sẽ giúp ích cho quá trình sửalỗi, bảo trì code sau này Tránh cách viết code phức tạp sẽ làm tăng khả năng xảy ralỗi trong quá trình thực hiện, cấu hình và sử dụng Ngoài ra, cần phải đạt được mộtmức độ đảm bảo an toàn phù hợp tăng theo khi các cơ chế bảo mật trở nên phức tạphơn
e Từ chối mặc định
Xác định quyền truy cập cơ sở Điều này có nghĩa theo mặc định, quyền truycập vào nhưng khu vực nhạy cảm sẽ bị từ chối và được bảo vệ Xác định các điềukiện cần và đủ 1 cách rõ ràng để được phép truy cập
f Quản lý người dùng, phiên và quyền
Mỗi phiên sẽ thực thi với quyền hạn cần thiết tối thiểu để thực thi một việc gì
đó Bất kỳ sự cho phép nâng cao đặc quyền chỉ nên có hiệu lực trong một thời giannhất định Cách tiếp cận này làm giảm cơ hội bị kẻ tấn công thực thi mã độc, cáchành động sai trái với nâng cao đặc quyền
g Làm sạch dữ liệu gửi đến các hệ thống khác
Làm sạch tất cả dữ liệu được truyền đến các hệ thống con phức tạp như dònglệnh, cơ sở dữ liệu quan hệ và các thành phần thương mại ngoài luồng (cổng thanhtoán trực tuyến) Kẻ tấn công có thể gọi tới chức năng không được sử dụng trong cácthành phần này thông qua việc sử dụng SQL Injection, dòng lệnh hoặc các cuộc tấncông Injection khác
h Thực thi phòng thủ theo chiều sâu
Quản lý rủi ro bằng nhiều chiến lược phòng thủ, nếu một lớp phòng thủ khôngcòn phù hợp, một lớp phòng thủ khác có thể ngăn chặn lỗ hổng có thể bị khai tháchoặc hạn chế hậu quả của việc khai thác thành công Ví dụ, kết hợp các kỹ thuật lập