1. Trang chủ
  2. » Luận Văn - Báo Cáo

Xây dựng các ca kiểm thử an toàn thông tin cho ứng dụng web

114 486 2

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 114
Dung lượng 2,59 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

6 Explorer, Netscap Navigator, Firefox… Trình chủ thường được dùng như Apache, IIS… Hệ quản trị cơ sở dữ liệu phổ biến như SQL Server, MySQL, DB2, Access … Một giải pháp dùng để bảo vệ m

Trang 1

AN TOÀN THÔNG TIN CHO ỨNG DỤNG WEB

LUẬN VĂN THẠC SỸ CÔNG NGHỆ THÔNG TIN

Hà Nội - 2014

Trang 2

AN TOÀN THÔNG TIN CHO ỨNG DỤNG WEB

Ngành: Công nghệ thông tin

Trang 3

i

LỜI CẢM ƠN

Trước hết, tôi xin gửi lời cảm ơn đặc biệt đến TS Đặng Đức Hạnh, Bộ môn Công nghệ phần mềm, Khoa Công nghệ Thông tin, Trường Đại học Công nghệ, Đại học Quốc Gia Hà Nội, người đã định hướng đề tài, cung cấp tài liệu và tận tình hướng dẫn chỉ bảo tôi trong suốt quá trình thực hiện luận văn cao học này

Tôi xin được gửi lời cảm ơn sâu sắc tới các thầy cô giáo trong khoa Công nghệ Thông tin, Trường Đại học Công nghệ, Đại học Quốc Gia Hà Nội đã tận tình giảng dạy và truyền đạt những kiến thức, những kinh nghiệm quý báu cũng như những tình cảm tốt đẹp cho tôi trong suốt thời gian tôi học Cao học

Cuối cùng, tôi xin dành tình cảm biết ơn chân thành đến gia đình, bạn bè và đồng nghiệp, những người đã luôn ở bên cạnh tôi, động viên, chia sẻ cùng tôi trong suốt thời gian học Cao học cũng như quá trình thực hiện luận văn Cao học

Hà Nội, tháng 05 năm 2014

Nguyễn Thị Thu Hiền

Trang 4

ii

LỜI CAM ĐOAN

Tôi xin cam đoan: bản luận văn “Xây dựng các ca kiểm thử an toàn thông tin cho ứng dụng web” là do chính tôi viết dưới sự hướng dẫn khoa học của TS Đặng Đức Hạnh Nội dung của luận văn có tham khảo nhưng không sao chép từ bất kỳ tài liệu nào đã được công bố

Hà Nội, tháng 05 năm 2014

Học viên Nguyễn Thị Thu Hiền

Trang 5

iii

MỤC LỤC

LỜI CẢM ƠN i

LỜI CAM ĐOAN ii

MỤC LỤC iii

DANH MỤC KÝ HIỆU, TỪ VIẾT TẮT vi

DANH MỤC BẢNG vii

DANH MỤC HÌNH VẼ viii

MỞ ĐẦU 1

CHƯƠNG 1 KHÁI NIỆM CƠ BẢN 2

1.1 Các khái niệm cơ bản trong kiểm thử phần mềm 2

1.1.1 Khái niệm về kiểm thử phần mềm 2

1.1.2 Các phương pháp kiểm thử 2

1.1.3 Các chiến lược kiểm thử 3

1.2 Kiểm thử an toàn thông tin cho ứng dụng web 4

1.2.1 Khái niệm ứng dụng web 4

1.2.2 Hoạt động của một ứng dụng Web 6

1.2.3 Kiểm thử ATTT cho ứng dụng web 7

1.2.4 Quy trình kiểm thử an toàn thông tin 7

CHƯƠNG 2 THIẾT KẾ CA KIỂM THỬ ATTT CHO ỨNG DỤNG WEB 8

2.1 Phương pháp thiết kế ca kiểm thử ATTT 9

2.2 Tổng hợp nguy cơ về ATTT cho ứng dụng web 10

R1 Tương tác với cơ sở dữ liệu tránh lỗ hổng SQL Injection 10

R2 Xử lý dữ liệu đầu vào tránh lỗ hổng XSS 10

Trang 6

iv

R3 Sử dụng Token trong phương thức GET và POST tránh lỗ hổng CSRF 11

R4 Kiểm tra quyền truy cập của người dùng 12

R5 Session Hijacking 12

R6 Session fixation 12

R7 Kiểm soát các thao tác với file 13

R8 Mã hóa dữ liệu nhạy cảm 14

R9 User enumeration 15

R10 HTTP Only cookie 15

R11 Chuyển hướng và chuyển tiếp thiếu thẩm tra 15

R12 Thất thoát thông tin và xử lý lỗi không đúng cách 16

R13 Sử dụng captcha an toàn 16

R14 Mật khẩu mạnh 16

2.3 Các ca kiểm thử ATTT 17

F1 Ca kiểm thử mức chung 19

F2 Ca kiểm thử cho chức năng Đăng nhập – Đăng xuất 24

F3 Ca kiểm thử cho chức năng Tìm kiếm 28

F4 Ca kiểm thử cho chức năng Thêm mới 35

F5 Ca kiểm thử cho chức năng Sửa 44

F6 Ca kiểm thử cho chức năng Xóa 60

F7 Ca kiểm thử cho chức năng Xem thông tin 66

F8 Ca kiểm thử cho chức năng Download 71

F9 Ca kiểm thử cho chức năng Upload 78

F10 Ca kiểm thử cho chức năng Import 84

F11 Ca kiểm thử cho chức năng Trang có chuyển hướng 93

Trang 7

v

F12 Ca kiểm thử liên quan đến dữ liệu nhạy cảm 94

F13 Ca kiểm thử cho chức năng liên quan đến mật khẩu 96

CHƯƠNG 3 VẬN DỤNG VÀ CÔNG CỤ HỖ TRỢ 98

3.1 Minh họa phương pháp kiểm thử 98

3.2 Công cụ hỗ trợ 100

3.2.1 Quản lý các ca kiểm thử an toàn thông tin 100

3.2.2 Sinh các ca kiểm thử với từng chức năng của hệ thống website 101

KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 102

TÀI LIỆU THAM KHẢO 103

Trang 8

vi

DANH MỤC KÝ HIỆU, TỪ VIẾT TẮT

CSRF Cross-site request forgery Lỗ hổng CSRF

URL Uniform Resource Locator Định vị Tài nguyên thống nhất ATTT Information security An toàn thông tin

HTTP HyperText Transfer Protocol Giao thức truyền tải siêu văn bản HTTPS Hypertext Transfer Protocol

Secure

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

an toàn HTML HyperText Markup Language Ngôn ngữ Đánh dấu Siêu văn bản

SQL Structured Query Language ngôn ngữ truy vấn mang tính cấu

trúc HQL Hibernate Query Language Ngôn ngữ truy vấn hướng đối

Trang 9

vii

DANH MỤC BẢNG

Bảng 2.1 Các ký tự đặc biệt có nguy cơ gây lỗ hổng XSS 11

Bảng 2.2 Bảng tổng hợp các nguy cơ mất ATTT tương ứng với từng chức năng của một ứng dụng web 18

Bảng 2.3 Các ca kiểm thử chỉ cần kiểm tra một lần trên toàn bộ hệ thống 19

Bảng 2.4 Các ca kiểm thử với màn hình có chức năng Đăng nhập – Đăng xuất 24

Bảng 2.5 Các ca kiểm thử với màn hình có chức năng Tìm kiếm 28

Bảng 2.6 Các ca kiểm thử với màn hình có chức năng Thêm mới 35

Bảng 2.7 Các ca kiểm thử với màn hình có chức năng Sửa 44

Bảng 2.8 Các ca kiểm thử với màn hình có chức năng Xóa 60

Bảng 2.9 Các ca kiểm thử với màn hình có chức năng Xem thông tin chi tiết 1 bản ghi 66

Bảng 2.10 Các ca kiểm thử với màn hình có chức năng Download 71

Bảng 2.11 Các ca kiểm thử với màn hình có chức năng Upload 78

Bảng 2.12 Các ca kiểm thử với màn hình có chức năng Import 84

Bảng 2.13 Các ca kiểm thử với màn hình có chức năng Chuyển hướng 93

Bảng 2.14 Các ca kiểm thử với chức năng có dữ liệu nhạy cảm 94

Bảng 2.15 Các ca kiểm thử với màn hình có chức năng liên quan đến mật khẩu 96

Trang 10

viii

DANH MỤC HÌNH VẼ

Hình 1.1 : Kiến trúc ứng dụng Web và Database 5

Hình 1.2 : Mô hình hoạt động của một ứng dụng Web 5

Hình 1.3 Quy trình kiểm thử ATTT 8

Hình 3.1 Chức năng quản lý sự kiện 98

Hình 3.2 Chức năng quản lý các ca kiểm thử ATTT trên ứng dụng web 100

Hình 3.3 Chức năng sinh tập các ca kiểm thử cho từng chức năng trên ứng dụng web 101

Trang 11

1

MỞ ĐẦU

Trong thời đại bùng nổ công nghệ thông tin hiện nay, phần mềm đã đi vào mọi ngõ ngách của cuộc sống và đã có những ảnh hưởng to lớn đến đời sống của con người Bởi vậy mà hơn bao giờ hết, việc kiểm thử và đảm bảo chất lượng phần mềm càng trở lên quan trọng Giờ đây, việc kiểm thử phần mềm cũng không chỉ đơn thuần

là kiểm thử cho các chức năng hoạt động tốt, mà còn phải đảm bảo bảo mật phần mềm Bởi những nỗ hổng về bảo mật là những nguy cơ rất nguy hiểm có thể dẫn đến những hậu quả nghiêm trọng

Các loại tội phạm công nghệ cao, an ninh mạng là những vấn đề thuộc an ninh phi truyền thống đang ngày càng phổ biến và tác động, ảnh hưởng đến an ninh quốc gia Theo tờ USA Today, năm 2012, tội phạm công nghệ cao gây thiệt hại cho nước

Mỹ khoảng 67,2 tỷ USD, trên toàn cầu khoảng 400 tỷ USD, chỉ đứng sau tội phạm ma túy (460 tỷ USD) [1]

Thực trạng an toàn thông tin tại Việt Nam đang tiềm ẩn nhiều nguy cơ An ninh mạng vẫn chưa thực sự được quan tâm tại các cơ quan, doanh nghiệp Theo nhận định của các chuyên gia Công ty Bkav [2], hầu hết cơ quan doanh nghiệp của Việt Nam chưa bố trí được nhân sự phụ trách an ninh mạng hoặc năng lực và nhận thức của đội ngũ này chưa tương xứng với tình hình thực tế Vấn đề an ninh mang đang trở lên hiện hữu, ảnh hưởng sâu rộng, tác động đến các vấn đề chính trị, kinh tế và an ninh quốc gia Việc đảm bảo bảo mật phần mềm đã trở thành yêu cầu cấp thiết và bắt buộc đối với bất kỳ phần mềm nào Vì vậy, việc kiểm thử bảo mật cũng trở thành 1 yêu cầu bắt buộc trong quy trình kiểm thử phần mềm của rất nhiều công ty Xuất phát từ nhu cầu thực tế này, chúng tôi đã nghiên cứu và tìm hiểu về an toàn thông tin đối với các ứng dụng web và các phương pháp kiểm thử để tìm ra các nỗ hổng về bảo mật của ứng dụng web Sau một quá trình nghiên cứu dưới sự hướng dẫn của TS Đặng Đức Hạnh, tôi đã hoàn thành luận văn “XÂY DỰNG CÁC CA KIỂM THỬ AN TOÀN THÔNG TIN CHO ỨNG DỤNG WEB” Luận văn được cấu trúc thành 3 chương như sau:

- Chương 1: Khái niệm cơ bản

- Chương 2: Thiết kế các ca kiểm thử ATTT cho ứng dụng web

- Chương 3: Vận dụng và công cụ hỗ trợ

Trang 12

2

CHƯƠNG 1 KHÁI NIỆM CƠ BẢN

Trong Chương 1 chúng tôi trình bày về những khái niệm cơ bản trong kiểm thử phần mềm và kiểm thử an toàn thông tin

1.1 Các khái niệm cơ bản trong kiểm thử phần mềm

Chúng tôi xin tóm lược lại những khái niệm cơ bản về kiểm thử phần mềm, các phương pháp và chiến lược kiểm thử

1.1.1 Khái niệm về kiểm thử phần mềm

Kiểm thử phần mềm [5] là quá trình khảo sát một hệ thống hay thành phần

dưới những điều kiện xác định, quan sát và ghi lại các kết quả, và đánh giá một khía cạnh nào đó của hệ thống hay thành phần đó

Mục đích của kiểm thử phần mềm là tìm ra các lỗi hay khiếm khuyết phần

mềm nhằm đảm bảo hiệu quả hoạt động tối ưu của phần mềm trong nhiều điều kiện khác nhau

Có thể định nghĩa một cách dễ hiểu như sau: Kiểm thử phần mềm [6] là một

tiến trình hay một tập hợp các tiến trình được thiết kế để đảm bảo mã máy tính thực hiện theo cái mà chúng đã được thiết kế để làm, và không thực hiện bất cứ thứ gì không mong muốn Đây là một pha quan trọng trong quá trình phát triển hệ thống, giúp cho người xây dựng hệ thống và khách hàng thấy được hệ thống mới đã đáp ứng yêu cầu đặt ra hay chưa

1.1.2 Các phương pháp kiểm thử

Trong thực tế, có 2 phương pháp kiểm thử phần mềm [6] thường được sử dụng

là phương pháp kiểm thử tĩnh (static testing) và kiểm thử động (dynamic testing)

Kiểm thử tĩnh (static testing): Là phương pháp kiểm thử phần mềm đòi hỏi

phải duyệt lại các yêu cầu và các đặc tả bằng tay, thông qua việc sử dụng giấy, bút để kiểm tra logic, lần từng chi tiết mà không cần chạy chương trình Phương pháp này chủ yếu dùng để kiểm tra tính đúng đắn của mã lệnh, thuật toán và các tài liệu đặc tả Ngoài ra, phương pháp này có thể dùng để xem xét các yêu cầu và thông số kỹ thuật Kiểm thử tĩnh cũng có thể được thực hiện một cách tự động Trong các môi trường lập trình, thường có sẵn một trình thông dịch hay biên dịch kiểm tra tính đúng đắn của cú pháp chương trình, đó cũng là một cách kiểm thử tĩnh nhưng được thực hiện tự động

Trang 13

3

Kiểm thử động (dynamic testing): Là phương pháp kiểm thử thông qua việc

dùng máy chạy chương trình để điều tra trạng thái tác động của chương trình Đó là kiểm thử dựa trên các ca kiểm thử xác định bằng sự thực hiện của đối tượng kiểm thử hay chạy chương trình Kiểm thử động là kiểm tra cách thức hoạt động của mã lệnh, tức là kiểm tra sự phản ứng vật lý từ hệ thống tới các biến luôn thay đổi theo thời gian Trong kiểm thử động, phần mềm phải thực sự được biên dịch và chạy Kiểm thử động bao gồm làm việc với phần mềm, nhập các giá trị đầu vào và kiểm tra xem liệu đầu ra

có như mong muốn hay không

1.1.3 Các chiến lược kiểm thử

Trong chiến lược kiểm thử, chúng ta có ba chiến lược kiểm thử [6] hay dùng

nhất là: kiểm thử hộp đen, kiểm thử hộp trắng, và kiểm thử hộp xám Chi tiết các phương pháp này như mô tả phần dưới

1.1.3.1 Kiểm thử hộp đen – Black box

Một trong những chiến lược kiểm thử quan trọng là kiểm thử hộp đen, hướng

dữ liệu, hay hướng vào ra Kiểm thử hộp đen xem chương trình như là một “hộp đen” Mục đích của bạn là hoàn toàn không quan tâm về cách cư xử và cấu trúc bên trong của chương trình Thay vào đó, tập trung vào tìm các trường hợp mà chương trình không thực hiện theo các đặc tả của nó Ở mức kiểm thử này, kiểm thử viên chỉ xem xét dữ liệu đầu vào và giá trị đầu ra có giống với mong muốn không, mà không cần phải quan tâm hệ thống làm thế nào để đưa được giá trị đầu ra như mong muốn Kiểm thử dựa trên đặc tả là cần thiết, nhưng không đủ để ngăn chặn những rủi ro chắc chắn

Kiểm thử hộp đen không có mối liên quan nào tới mã lệnh và kiểm thử viên chỉ rất đơn giản tâm niệm là: một mã lệnh phải có lỗi Sử dụng nguyên tắc “Hãy đòi hỏi và bạn sẽ được nhận”, những kiểm thử viên hộp đen tìm ra lỗi mà những lập trình viên không tìm ra Nhưng, người ta nói kiểm thử hộp đen “giống như là đi trong bóng tối

mà không có đèn vậy”, bởi vì kiểm thử viên không biết các phần mềm được kiểm tra thực sự được xây dựng như thế nào Đó là lý do mà có nhiều trường hợp mà một kiểm thử viên hộp đen viết rất nhiều ca kiểm thử để kiểm tra một thứ gì đó mà đáng lẽ có thể chỉ cần kiểm tra bằng 1 ca kiểm thử duy nhất Trong khi đó, một số phần của chương trình lại không được kiểm tra chút nào Do vậy, kiểm thử hộp đen có ưu điểm

là đánh giá khách quan, nhưng lại có nhược điểm là một kiểu thăm dò mù

1.1.3.2 Kiểm thử hộp trắng – White box

Là một chiến lược kiểm thử khác, trái ngược hoàn toàn với kiểm thử hộp đen, kiểm thử hộp trắng hay kiểm thử hướng logic cho phép bạn khảo sát cấu trúc bên trong của chương trình Chiến lược này xuất phát từ dữ liệu kiểm thử bằng sự kiểm thử tính

Trang 14

4

logic của chương trình Kiểm thử viên sẽ truy cập vào cấu trúc dữ liệu và giải thuật bên trong chương trình (và cả mã lệnh thực hiện chúng) Phương pháp kiểm thử hộp trắng cũng có thể được kết hợp với phương pháp kiểm thử hộp đen để tạo ra bộ các ca kiểm thử đầy đủ nhằm giảm thiểu rủi ro

1.1.3.3 Kiểm thử hộp xám – Gray box testing

Kiểm thử hộp xám đòi hỏi phải có sự truy cập tới cấu trúc dữ liệu và giải thuật bên trong cho những mục đích thiết kế các ca kiểm thử, nhưng là kiểm thử ở mức người sử dụng hay mức hộp đen Việc thao tác tới dữ liệu đầu vào và định dạng dữ

liệu đầu ra là không rõ ràng, giống như một chiếc “hộp xám”, bởi vì đầu vào và đầu ra

rõ ràng là ở bên ngoài “hộp đen” mà chúng ta vẫn gọi về hệ thống được kiểm tra Sự khác biệt này đặc biệt quan trọng khi quản lý kiểm thử tích hợp – Intergartion testing

giữa 2 modun mã lệnh được viết bởi hai chuyên viên thiết kế khác nhau, trong đó chỉ giao diện là được đưa ra để kiểm thử Kiểm thử hộp xám có thể cũng bao gồm cả thiết

kế đối chiếu để quyết định, ví dụ, giá trị biên hay thông báo lỗi

1.2 Kiểm thử an toàn thông tin cho ứng dụng web

Bên cạnh kiểm thử chức năng cho phần mềm, việc kiểm thử an toàn thông tin cho mỗi ứng dụng cũng là một vấn đề rất quan trọng Đặc biệt là với các ứng dụng web, loại ứng dụng có đối tượng người dùng rất đa dạng và phức tạp Ứng dụng web hiện cũng là mục tiêu tấn công của nhiều hacker Bởi vậy, việc đảm bảo an toàn thông tin cho các ứng dụng web là một yêu cầu cấp thiết Để nghiên cứu kỹ hơn về vấn đề này, chúng ta sẽ đi tìm hiểu từng khái niệm để hiểu rõ hơn thế nào là kiểm thử an toàn thông tin cho ứng dụng web

1.2.1 Khái niệm ứng dụng web

Ứng dụng Web là một ứng dụng chủ/khách sử dụng giao thức HTTP để tương tác với người dùng hay hệ thống khác Trình khách dành cho người sử dụng thường là một trình duyệt Web như Internet Explorer hay Firefox Cũng có thể là một chương trình đóng vai trò đại lý người dùng hoạt động như một trình duyệt tự động Người dùng gửi và nhận các thông tin từ trình chủ thông qua việc tác động vào các trang Web

Tốc độ phát triển các kỹ thuật xây dựng ứng dụng Web cũng phát triển rất nhanh Trước đây những ứng dụng Web thường được xây dựng bằng CGI (Common Gateway Interface) được chạy trên các trình chủ Web và có thể kết nối vào các cơ sở

dữ liệu đơn giản trên cùng máy chủ Ngày nay ứng dụng Web thường được viết bằng Java (hay các ngôn ngữ tương tự) và chạy trên máy chủ phân tán, kết nối đến nhiều nguồn dữ liệu

Trang 15

5

Một ứng dụng web thường có kiến trúc gồm:

Hình 1.1 : Kiến trúc ứng dụng Web và Database

- Lớp trình bày: Lớp này có nhiệm vụ hiển thị dữ liệu cho người dùng, ngoài ra còn có thể có thêm các ứng dụng tạo bố cục cho trang web

- Lớp ứng dụng: là nơi xử lý của ứng dụng Web Nó sẽ xử lý thông tin người dùng yêu cầu, đưa ra quyết định, gửi kết quả đến “lớp trình bày” Lớp này thường được cài đặt bằng các kỹ thuật lập trình như CGI, Java, NET, PHP hay ColdFusion, được triển khai trên các trình chủ như IBM WebSphere, WebLogic, Apache, IIS …

- Lớp dữ liệu: thường là các hệ quản trị dữ liệu (DBMS) chịu trách nhiệm quản lý các file dữ liệu và quyền sử dụng

Mô hình hóa hoạt động của một ứng dụng Web gồm trình khách, trình chủ, hệ quản trị cơ sở dữ liệu:

Hình 1.2 : Mô hình hoạt động của một ứng dụng Web Trình khách (hay còn gọi là trình duyệt) thường được sử dụng là Internet

Trang 16

6

Explorer, Netscap Navigator, Firefox… Trình chủ thường được dùng như Apache, IIS… Hệ quản trị cơ sở dữ liệu phổ biến như SQL Server, MySQL, DB2, Access … Một giải pháp dùng để bảo vệ một hệ thống mạng thường được sử dụng là bức tường lửa (firewall), nó có vai trò như là lớp rào chắn bên ngoài một hệ thống mạng, vì chức năng chính của firewall là kiểm soát luồng thông tin giữa các máy tính Có thể xem firewall như một bộ lọc thông tin, nó xác định và cho phép một máy tính này có được truy xuất đến một máy tính khác hay không, hay một mạng này có được truy xuất đến mạng kia hay không Người ta thường dùng firewall vào mục đích:

- Cho phép hoặc cấm những dịch vụ truy xuất ra ngoài

- Cho phép hoặc cấm những dịch vụ từ bên ngoài truy nhập vào trong

- Kiểm soát địa chỉ truy nhập, cấm địa chỉ truy nhập

Firewall hoạt động dựa trên gói IP do đó kiểm soát việc truy nhập của máy người sử dụng

Trong kỹ thuật phần mềm, một Ứng dụng web [7] là một trình ứng dụng mà có

thể tiếp cận qua web thông qua mạng như Internet hay intranet Ứng dụng web phổ biến nhờ vào sự có mặt vào bất cứ nơi đâu của một chương trình Khả năng cập nhật

và bảo trì ứng dụng Web mà không phải phân phối và cài đặt phần mềm trên hàng ngàn máy tính là lý do chính cho sự phổ biến của nó Ứng dụng web được dùng để hiện thực webmail, bán hàng trực tuyến, đấu giá trực tuyến, wiki, diễn đàn thảo luận, weblog, MMORPG, hệ quản trị nội dung, phần mềm quản lý nguồn nhân lực và nhiều chức năng khác

Các ứng dụng web có thể được viết bởi 1 ngôn ngữ bất kỳ, chạy trên rất nhiều loại hệ điều hành, nhiều loại trình duyệt khác nhau, và người dùng cuối có thể hành xử theo mọi cách mà bạn có thể tưởng tượng Cốt lõi của một ứng dụng web là sử dụng các giao thức HTTP để truyền dữ liệu Dữ liệu từ server gửi về client thường định dạng HTML và javascript Dữ liệu đầu vào thường sử dụng phương thức GET, POST

và các phương thức tương tự

1.2.2 Hoạt động của một ứng dụng Web

Đầu tiên trình duyệt sẽ gửi một yêu cầu (request) đến trình chủ Web thông qua các lệnh cơ bản GET, POST… của giao thức HTTP, trình chủ lúc này có thể cho thực thi một chương trình được xây dựng từ nhiều ngôn ngữ như Perl, C/C++… hoặc trình chủ yêu cầu bộ diễn dịch thực thi các trang ASP, JSP… theo yêu cầu của trình khách Tùy theo các tác vụ của chương trình được cài đặt mà nó xử lý, tính toán, kết nối đến

cơ sở dữ liệu, lưu các thông tin do trình khách gửi đến và từ đó trả về cho trình khách

1 luồng dữ liệu có định dạng theo giao thức HTTP, nó gồm 2 phần:

- Header mô tả các thông tin về gói dữ liệu và các thuộc tính, trạng thái trao đổi giữa trình duyệt và WebServer

Trang 17

lỗ hổng Web để mở rộng sự tấn công của mình vào các hệ thống không liên quan khác

1.2.3 Kiểm thử ATTT cho ứng dụng web

Kiểm thử bảo mật web [3] là kiểm tra sự đảm bảo an toàn dữ liệu và bảo vệ tài

nguyên của hệ thống trước sự tấn công nhằm phá vỡ hệ thống hoặc sử dụng trái phép các tài nguyên của một số đối tượng có mục đích xấu Để làm được điều này cần có kiến thức về công nghệ bảo mật, kinh nghiệm thực tế về cách thức thâm nhập các phần không được phép trên hệ thống website

Việc thiết lập bảo mật cho một hệ thống website phụ thuộc vào nhiều yếu tố: bảo mật về thiết kế, bảo mật về xây dựng mã nguồn, bảo mật về các thiết lập của trình duyệt, bảo mật tường lửa

Tuy nhiên, trong khuôn khổ luận văn này, chúng tôi chỉ để cập đến vấn đề bảo mật khi xây dựng mã nguồn Phương pháp kiểm tra độ bảo mật của ứng dụng thông qua mã nguồn chủ yếu dùng để xác định sự an toàn của thuật toán được dùng trong ứng dụng Dựa trên các đặc trưng của ứng dụng web, việc kiểm thử có thể xác định nguy cơ rò rỉ thông tin hoặc bị tấn công chiếm quyền kiểm soát hệ thống Phương pháp này thường ứng dụng kỹ thuật kiểm thử hộp trắng

1.2.4 Quy trình kiểm thử an toàn thông tin

Quy trình kiểm thử chức năng có đầu vào là tài liệu mô tả yêu cầu hệ thống và tài liệu thiết kế hệ thống Cũng tương tự như vậy, nhưng quy trình kiểm thử an toàn thông tin còn cần thêm tài liệu phân tích các nguy cơ mất an toàn thông tin đối với hệ thống Từ đó, đưa ra các ca kiểm thử trên hệ thống và thực hiện kiểm thử để tìm ra lỗi

Trang 18

8

Quy trình kiểm thử an toàn thông tin đƣợc mô tả nhƣ hình 1.3 [3]:

Hình 1.3 Quy trình kiểm thử ATTT

Bắt đầu

Kết thúc

Phân tích các nguy cơ mất ATTT đối với hệ thống

Xây dựng các ca kiểm thử ATTT

Thực hiện kiểm thử ATTT

Nếu có lỗi Sai

Đúng Tài liệu giải pháp

Trang 19

9

CHƯƠNG 2 THIẾT KẾ CA KIỂM THỬ ATTT

CHO ỨNG DỤNG WEB

Các ứng dụng web đứng trước rất nhiều nguy cơ về việc mất an toàn thông tin

Để giảm thiểu những nguy cơ này, quy trình sản xuất phần mềm cần tuân thủ những nguyên tắc về lập trình an toàn Cũng giống như việc đảm bảo các chức năng hoạt động đúng, các quy trình phát triển phần mềm đều phải qua 2 bước: lập trình và kiểm thử Việc đảm bảo các chức năng không bị lỗ hổng về an toàn thông tin cũng cần trải qua 2 bước như vậy Để đảm bảo thực hiện được điều này, chúng ta sẽ cùng tìm hiểu cách thức kiểm tra mức độ ATTT của một hệ thống web

2.1 Phương pháp thiết kế ca kiểm thử ATTT

Để thiết kế các ca kiểm thử ATTT cho các ứng dụng Web, chúng tôi thực hiện theo các bước sau

Bước 1: Chương này xác định các nguy cơ về lỗi ATTT Dựa trên công bố của thế giới

về các lỗ hổng bảo mâ ̣t của mô ̣t ứng du ̣ng web , chương 2 tâ ̣p hợp những mô tả cu ̣ thể về từng lỗ hổng bảo mâ ̣t , phân tích từng lỗ hổng có thể dẫn đến những nguy về mất ATTT của hê ̣ thống

Mô ̣t ví du ̣ điển hình là l ỗi "SQL Injection" Lỗi này xuất hiê ̣n khi lâ ̣p trình viên sử du ̣ng phương pháp cô ̣ng xâu đối với các dữ liê ̣u đầu vào Những kẻ tấn công có thể

lơ ̣i du ̣ng đă ̣c điểm này để truyền vào những đoa ̣n mã làm sai lê ̣ch mu ̣c đích truy v ấn

Bước 2: Mỗi l ỗ hổng bảo mật này có thể xuất hiện ở nhiều ph ần khác

nhau của một hệ thống Bởi vậy, chúng tôi sẽ phân một ứng dụng web thành các chức năng và phân tích từng chức năng và các nguy cơ về mất ATTT mà ch ức năng đó có khả năng mắc phải

Ví dụ, qua phân tích đă ̣c điểm dữ liê ̣u đầu vào của từng chức năng , chúng tôi nhâ ̣n thấy , lỗi "SQL Injection" có nguy cơ mắc phải tại các chức năng : Đăng nhâ ̣p , Tìm kiếm, Thêm mới, Sửa, Xoá, Xem thông tin, Import

Bước 3: Bước này mô tả chi ti ết cách thiết kế các ca ki ểm thử tương ứng với cặp

"nguy cơ ATTT" và "chức năng"

Ví dụ, với lỗi “SQL injection” và chức năng “Đăng nhâ ̣p” Chức năng Đăng nhâ ̣p bi ̣ lỗi SQL injection khi lâ ̣p trình không tham số hoá dữ liê ̣u truyền vào Tên đăng nhâ ̣p và Mâ ̣t khẩu , mà sử dụng phương pháp cộng xâu Kẻ tấn công có thể lợi dụng

đă ̣c điểm này để truyền vào các xâu dữ liê ̣u nhằm phá vỡ cấu trúc câu SQL kiểm tra

Trang 20

10

tính hợp của Tên đăng nhập và Mật khẩu Cụ thể câu truy vấn kiểm tra tính hợp lê ̣ của

Tên đăng nhâ ̣p và Mâ ̣t khẩu là select * from user where user = „Tên đăng nhập người dùng nhập‟ and pass = „Mật khẩu người dùng nhập‟ Trường hợp người dùng nhâ ̣p Tên đăng nhập = abc‟ or „a‟=‟a có thể dẫn đến việc phá vỡ cấu trúc ban đầu của câu truy vấn Câu truy vấn mới là select * from user where user = „abc‟ or „a‟ =‟a‟ and pass = „Mật khẩu người dùng nhập‟ , lúc này biểu thức điều kiện luôn đúng Bởi vâ ̣y,

dù người dùng không biết Tên đăng nhập và Mật khẩu vào hệ thống vẫn có thể truy

câ ̣p được Dựa vào những phân tích trên , chúng tôi thiết kế ca kiểm thử tương ứng nhằm mu ̣c đích kiểm tra hê ̣ thống có mắc lỗi SQL injection ở chức n ăng đăng nhâ ̣p không Phương pháp được áp du ̣ng để xây dựng lên ca kiểm thư trên là phương pháp kiểm thử hô ̣p trắng

Tính đúng đắn của ca kiểm thử được phân tích và đảm bảo ở bước 3 Trong phạm vi luận văn, chúng tôi không đi sâu chứng minh tính đúng đắn của các ca sử kiểm thử Điểm nhấn mạnh ở đây là phương pháp đề xuất cho viê ̣c thiết kế các ca kiểm thử ATTT cho ứng dụng Web

Trong phần tiếp theo của chương, mục 2.2 sẽ tổng hợp các nguy cơ về lỗi ATTT, mục 2.3 trình bày các ca kiểm thử được xây dựng theo phương pháp này

2.2 Tổng hợp nguy cơ về ATTT cho ứng dụng web

Phần này tổng hợp những vấn đề có thể dẫn đến mất ATTT đối với ứng dụng web Mỗi vấn đề được trình bày gồm 3 phần: mô tả vấn đề, nguy cơ mất ATTT của vấn đề và cách phòng chống

R1 Tương tác với cơ sở dữ liệu tránh lỗ hổng SQL Injection

Mô tả: Dữ liệu đầu vào từ người dùng phải được truyền dưới dạng tham số,

không được sử dụng cách cộng xâu trong các truy vấn tới cơ sở dữ liệu

Nguy cơ: Khi truy vấn tới cơ sở dữ liệu, lập trình viên thường sử dụng cách

cộng xâu dữ liệu đầu vào từ người dùng, các câu truy vấn này có thể bị mắc lỗi SQL Injection hoặc HQL Injection (nếu sử dụng Hibernate) Bằng việc lợi dụng các lỗi này,

kẻ tấn công có thể xem, thêm, sửa, xóa dữ liệu trong database từ đó chiếm được tài khoản admin, lấy cắp thông tin người dùng

Phòng chống: Để phòng chống các nguy cơ này, truy vấn SQL phải dùng

PrepareStatement, tất cả tham số phải được add bằng hàm (setParam), không được xử dụng cách cộng xâu trong truy vấn Với truy vấn HQL, tất cả tham số phải được add bằng hàm (setParam), không được xử dụng cách cộng xâu trong truy vấn [8]

R2 Xử lý dữ liệu đầu vào tránh lỗ hổng XSS

Trang 21

11

Mô tả: Xử lý dữ liệu đầu vào tránh lỗ hổng XSS có nghĩa là mã hóa dưới dạng

HTML các ký tự đặc biệt do người dùng gửi lên máy chủ và các ký tự đặc biệt trong

cơ sở dữ liệu trước khi gửi tới người dùng

Nguy cơ: Kết quả server trả về cho người dùng chủ yếu là dưới dạng HTML

Nội dung trả về thường bao gồm cả những giá trị mà người dùng nhập vào Hệ thống

có thể bị mắc lỗi XSS nếu không kiểm soát dữ liệu đầu vào XSS (Cross-Site Scripting) là một kĩ thuật tấn công bằng cách chèn vào các website động (ASP, PHP, CGI, JSP ) những thẻ HTML hay những đoạn mã script nguy hiểm có thể gây nguy hại cho những người sử dụng khác Trong đó, những đoạn mã nguy hiểm đựơc chèn vào hầu hết được viết bằng các Client-Site Script như JavaScript, JScript, DHTML và cũng có thể là cả các thẻ HTML

Phòng chống: Để tránh lỗ hổng XSS thì cần mã hóa dưới dạng HTML các ký

tự đặc biệt do client gửi đến Các ký tự này bao gồm: <,>,&,’,”,/ Việc mã hóa cần thực hiện trong trường hợp: dữ liệu lấy ra từ database khi trả về cho client Bản chất của việc mã hóa là thay thế các kí tự trên bằng chuỗi tương ứng trong bảng 2.1 Cách mã hóa này sẽ ngăn chặn được nguy cơ hệ thống thực thi các đoạn mã nguy hiểm [4]

Bảng 2.1 Các ký tự đặc biệt có nguy cơ gây lỗ hổng XSS

R3 Sử dụng Token trong phương thức GET và POST tránh lỗ hổng CSRF

Mô tả: Trong các tương tác của người dùng với cơ sở dữ liệu thông qua các

form, liên kết, sử dụng thêm biến token (được tạo ra mỗi đầu phiên truy cập của người dùng) như một tham số trong phương thức GET hoặc POST và kiểm tra giá trị token này tại máy chủ để xác nhận hành vi của người dùng

Nguy cơ: CSRF (Cross-site request forgery) là phương pháp mượn quyền của

người dùng khác để thực hiện một hành động không cho phép Ví dụ: Để có thể xóa một bài viết trên diễn đàn một member có thể mượn tay của một admin để làm việc đó

vì member không đủ chủ quyền nhưng admin lại đủ chủ quyền để thực hiện hành động này Kẻ tấn công lừa admin truy cập vào trang web có chứa đoạn mã xóa bài viết trên diễn đàn (Admin đang đăng nhập vào diễn đàn) như vậy admin đã gửi yêu cầu xóa bài viết trên diễn đàn mà không hề biết Một ví dụ nữa, ta có 1 link chuyển tiền vào tài khoản có dạng:

Trang 22

12

http://www.tek.eten.vn/bank/sendfund.php?sender=A&receiver=B&amount=1000000

000 Trong đó sender là người gửi tiền, receiver là người nhận tiền và amount là số tiền chuyển Hiển nhiên là đường link này chỉ được người A thực thi, vì thế nên phải

có một thao tác kiểm tra sender chính là người thực thi đường link Tuy vậy, bằng

một cách nào đó, hacker lừa được A chạy đường link trên (có thể là chèn một iframe tới đường link này, tại bài viết trong một forum và lừa cho A đọc bài viết), thao tác xác thực được vượt qua và hacker có thể chuyển tiền từ A đến bất kỳ tài khoản nào

Phòng chống: Đối với các yêu cầu quan trọng, sử dụng thêm biến token Trên

server sẽ kiểm tra token trong yêu cầu gửi lên từ client, nếu token không hợp lệ thì yêu cầu sẽ không được thực hiện [9]

R4 Kiểm tra quyền truy cập của người dùng

Mô tả: Kiểm soát quyền của người dùng trong mỗi request lên máy chủ

Nguy cơ: Trong các hệ thống có phân quyền, mỗi người dùng chỉ được phép

truy cập các dữ liệu mà mình được phép Tuy nhiên, nếu việc kiểm tra quyền không được kiểm soát tốt thì người dùng có thể truy cập được các dữ liệu không được quyền (leo quyền)

Phòng chống: Kiểm tra quyền trong từng request gửi lên server [10]

R5 Session Hijacking

Mô tả: Để đảm bảo ATTT, hệ thống không cho phép 2 phiên truy cập đồng

thời Thông tin session được xây dựng hướng người dùng Nghĩa là dựa trên các thông tin người dung như: IP, User-Agent hoặc địa chỉ MAC

Nguy cơ: Kỹ thuật tấn công cho phép hacker mạo danh người dùng hợp lệ sau

khi nạn nhân đã đăng nhập vào hệ thống bằng cách giải mã session ID của họ được lưu trữ trong cookie hay tham số URL, biến ẩn của form [11]

Phòng chống: Giới hạn phạm vi ứng dụng của session ID

o Kết hợp Session ID với địa chỉ của trình duyệt

o Kết hợp session ID với thông tin chứng thực được mã hóa SSL của người dùng

o Xóa bỏ session khi người dùng thoát khỏi hệ thống hay hết hiệu lực, có thể thực hiện trên trình chủ hoặc trình duyệt (cookie)

o Người sử dụng phải dùng chế độ thoát khỏi hệ thống để xóa bỏ session hiện thời và có thể những session ID còn lưu lại trên hệ thống khi họ quên thoát ra ngoài những lần trước

o Thiết lập thời gian hết hiệu lực cho session, tránh trường hợp hacker có thể duy trì session và sử dụng nó lâu dài

R6 Session fixation

Trang 23

13

Mô tả: Để đảm bảo ATTT, khi phát triển phần mềm cần tạo session mới sau

khi đăng nhập và xóa session cũ (trên Server) sau khi đăng xuất khỏi hệ thống Tránh trường hợp session của ứng dụng trước và sau khi đăng nhập không thay đổi Hacker

có thể sử dụng lỗ hổng này để đăng nhập mà không cần biết Tài khoản/ Mật khẩu

Nguy cơ: Kỹ thuật tấn công cho phép hacker mạo danh người dùng hợp lệ

bằng cách gửi một sesion ID hợp lệ đến người dùng, sau khi người dùng đăng nhập vào hệ thống thành công, hacker sẽ dùng lại sesion ID đó và nghiễm nhiêm trở thành người dùng hợp lệ [12]

Phòng chống:

- Biện pháp 1: Phần mềm cần tránh đăng nhập với một session ID có sẵn

Theo kiểu tấn công này, người dùng đăng nhập vào hệ thống thông qua một session ID do hacker tạo sẵn thay vì cho trình chủ tạo mới, do đó để

có phòng chống, ứng dụng phải hủy bỏ session ID được cung cấp bởi trình duyệt của người dùng khi đăng nhập và luôn tạo một session ID mới khi người dùng đăng nhập thành công

- Biện pháp 2: Phòng chống những hacker bên ngoài hệ thống Việc tạo

ứng dụng trên hệ thống theo hướng giới hạn (chỉ tạo một session ID mới cho người dùng sau khi họ thành công) sẽ khiến cho những hacker không phải là người dùng hợp lệ của hệ thống không thể sử dụng phương pháp tấn công này [12]

- Biện pháp 3: Giới hạn phạm vi ứng dụng của session ID

o Kết hợp session ID với địa chỉ của trình duyệt

o Kết hợp session ID với thông tin chứng thực được mã hóa SSL của người dùng

o Xóa bỏ session khi người dùng thoát khỏi hệ thống hay hết hiệu lực, có thể thực hiện trên trình chủ hoặc trình duyệt (cookie)

o Người sử dụng phải dùng chế độ thoát khỏi hệ thống để xóa bỏ session hiện thời và có thể những session ID có lưu lại trên hệ thống khi họ quên thoát ra ngoài những lần trước

o Thiết lập thời gian hết hiệu lực cho session, tránh trường hợp hacker có thể duy trì session và sử dụng nó lâu dài

R7 Kiểm soát các thao tác với file

Mỗi ứng dụng web có 2 loại file cần chú ý đến vấn đề bảo mật Thứ nhất, file upload lên hệ thống cần đảm bảo là file an toàn, hợp lệ và upload vào thư mục được phép Thứ hai, với file download, người dùng chỉ download được các file được phép Với mỗi loại file chúng tôi trình bày các vấn đề, nguy cơ và cách phòng chống như dưới dây [10]

File upload:

Trang 24

14

Mô tả: Giới hạn chỉ cho phép các định dạng file theo yêu cầu của ứng dụng

được phép upload lên máy chủ Kiểm soát file upload ở phía máy chủ Lưu trữ các file upload tại một thư mục riêng nằm ngoài thư mục web hoặc không cho phép truy cập, thực thi trên các thư mục đó Chặn các kí tự \, /, null và kiểm tra phần mở rộng của file khi xử lý với tên file trên máy chủ

Nguy cơ: Các thao tác với file thường sử dụng tên file, đường dẫn file được

gửi lên từ client, nếu ứng dụng không kiểm soát tốt các giá trị này (việc kiểm soát phải được thực hiện phía server) có thể dẫn đến việc download hoặc upload các file không hợp lệ

Phòng chống: Để đảm bảo không phát sinh các vấn đề mất an toàn thông tin

với file upload, phía server cần kiểm soát các file upload:

- Kiểm soát phần mở rộng của file, chỉ cho phép thực hiện với các file có định dạng theo yêu cầu

- Kiểm soát các vấn đè liên quan đến đọc ghi file, biến đường dẫn file phải được lọc các ký tự /, \ và kí tự null

File download:

Mô tả: Yêu cầu tất cả dữ liệu, tài nguyên hệ thống (báo cáo, file lưu trữ khi

xuất hệ thống xuất ra hoặc tải lên) không được lưu trong thư mục chia sẻ (share) việc thực hiện tải (download) dữ liệu này phải qua bước xác thực và tham số trong URI request phải được mã hóa Đối với các hệ thống đang triển khai yêu cầu các dữ liệu nhạy cảm này phải được lưu trong thư mục bên ngoài thư mục cài đặt web server

Nguy cơ: Trên hệ thống tồn tại các chức năng cho phép kết xuất dữ liệu truy

vấn, kết quả làm việc ra dưới dạng các file excel Tuy nhiên, chức năng này có các lỗ hổng sau có thể làm lộ dữ liệu của hệ thống:

o File exel được lưu trữ trong thư mục con của thư mục webapp

o File exel sau khi được người dùng tải về không được xóa

o Cho phép truy cập trực tiếp vào các file excel này mà không qua xác thực

o Ví dụ: Những đường link sau sẽ cho phép tải một file excel mà hệ thống đã xuất ra trước đó về mà không cần qua các bước xác thực:

o http://abc.com:8080/ams/share/report_out/exportDMHangHoa20121022090909.xls

Phòng chống: Các dữ liệu này lưu trong thư mục bên ngoài thư mục cài đặt

web server và không được đặt ở thư mục share Việc thực hiện download các dữ liệu này phải qua bước xác thực và tham số phải mã hóa

R8 Mã hóa dữ liệu nhạy cảm

Mô tả: Cần ngăn chặn việc thất thoát thông tin với các dữ liệu nhạy cảm trong

cơ sở dữ liệu hoặc trên đường truyền

Trang 25

15

Nguy cơ: Khi hệ thống bị tấn công và kẻ tấn công lấy được thông tin trong cơ

sở dữ liệu hoặc trên đường truyền, các dữ liệu nhạy cảm sẽ bị lộ nếu không được mã hóa hoặc mã hóa không an toàn

Phòng chống: Để giảm thiểu nguy cơ mất ATTT với dữ liệu trong DB và trên

đường truyền, quá trình phát triển ứng dụng cần mã hóa các dữ liệu nhạy cảm trong cơ

sở dữ liệu và sử dụng giao thức HTTPS với các chức năng quan trọng (như các hệ thống giao dịch trực tuyến, các chức năng đăng nhập) [10,13]

R9 User enumeration

Mô tả: Sử dụng chung thông báo lỗi cho cả 2 trường hợp nhập sai tên đăng

nhập và mật khẩu trên trang đăng nhập vào hệ thống Nhằm tránh trường hợp thông báo lỗi trên trang đăng nhập phân biệt giữa nhập sai tên đăng nhập và sai mật khẩu Dựa vào đó hacker có thể thử và tìm ra các user có trên hệ thống

Nguy cơ: Trường hợp thông báo lỗi trên trang đăng nhập phân biệt giữa nhập

sai tên đăng nhập và sai mật khẩu Dựa vào đó hacker có thể thử và tìm ra các user có trên hệ thống

Phòng chống: Sử dụng chung thông báo lỗi cho cả 2 trường hợp nhập sai tên

đăng nhập và mật khẩu trên trang đăng nhập vào hệ thống [14]

R10 HTTP Only cookie

Mô tả: Yêu cầu thiết lập thuộc tính ”HTTP Only” cho session cookie Vì nếu

Session cookie không được set thuộc tính ”HTTP Only”, hacker có thể sử dụng mã javascript để ăn cắp cookie của người dùng

Nguy cơ: Hacker có thể sử dụng mã javascript để ăn cắp cookie của người

dùng

Phòng chống: Yêu cầu thiết lập thuộc tính "HTTP Only" cho session cookie

Vì nếu Session cookie không được set thuộc tính "HTTP Only" Ta có thể cấu hình bên phía Webserver [15]

R11 Chuyển hướng và chuyển tiếp thiếu thẩm tra

Mô tả: Không cho phép người dùng cuối có thể can thiệp vào quá trình redirect

từ ứng dụng này sang ứng dụng khác Nếu cần sử dụng thì URL phải được kiểm tra, đảm bảo URL được redirect đến nằm trong danh sách cho phép của ứng dụng Nếu không được kiểm tra, kẻ tấn công có thể redirect đến URL có nhiễm mã độc để cài đặt phần mềm độc hại, hoặc lừa nạn nhân khai báo mật khẩu, hoặc những thông tin nhạy cảm khác

Nguy cơ: Hacker có thể redirect đến URI có nhiễm mã độc để cài phần mềm

độc hại, hoặc lừa nạn nhân khai báo mật khẩu, hoặc những thông tin nhạy cảm khác

Trang 26

16

Ví dụ: http://www.example.com/redirect.jsp?url=evil.com ở đây evil.com chính là trang hacker muốn chuyển đến

Phòng chống: Hạn chế sử dụng việc chuyển hướng và chuyển tiếp đến URI

khác Nếu sử dụng thì nên hạn chế truyền tham số là trang sẽ chuyển hướng đến, hoặc tham số này phải được mã hóa và được kiểm tra tính hợp lệ của nó [16]

R12 Thất thoát thông tin và xử lý lỗi không đúng cách

Mô tả: Yêu cầu không hiển thị chi tiết lỗi cho người dùng cuối, hạn chế thông

tin hiển thị nhất có thể Đồng thời các thông tin lỗi này phải được log lại bên server để phục vụ bảo trì

Nguy cơ: Việc hiển thị chi tiết và quá nhiều thông tin lỗi khi xử lý, các thông

tin này rất có ích cho hacker Hacker có thể dựa vào các thông tin này để đoán biết hệ thống cũng như tiếp cận, khai thác lỗ hổng ứng dụng

Phòng chống: Yêu cầu tất cả các ngoại lệ đều phải được xử lý, và được lưu vào trong hệ thống log để được xử lý sau này Hạn chế hiển thị chi tiết lỗi ra phía người

dùng cuối chỉ nên thông báo lỗi đơn giản nhất có thể [17]

R13 Sử dụng captcha an toàn

Mô tả: Nhằm mục đích chủ động bảo vệ các ứng dụng web, phòng tránh các

nguy cơ từ việc dò quyét mật khẩu người dùng, đăng ký tài khoản, gửi thư rác hàng loạt, gửi bình luận, nhận xét trên các website với số lượng lớn bằng các Chương trình

tự động [18]

Nguy cơ: Hacker sử dụng các phần mềm tự động nhằm thực hiện hàng loạt các

tác vụ của hệ thống gây ảnh hưởng đến hoạt động và chất lượng phục vụ của hệ thống

Phòng chống: Sử dụng captcha trong các trường hợp có nguy cơ tấn công bằng

các phần mềm tự động VD: với các chức năng đăng ký tài khoản, gửi bình luận…

R14 Mật khẩu mạnh

Mô tả: Nhằm mục đích chủ động bảo vệ thông tin tài khoản và mật khẩu của

người dùng, hệ thống cần có tính năng yêu cầu người dùng sử dụng mật khẩu mạnh [19]

Nguy cơ: Việc sử dụng mật khẩu không đảm bảo độ phức tạp có thể dẫn đến

việc: hacker sử dụng phần mềm tự động đề dò ra mật khẩu của người dùng

Phòng chống: Hệ thống cần thiết đặt tính năng yêu cầu người dùng sử dụng

mật khẩu mạnh, đảm bảo các tiêu chí:

- Mật khẩu có độ dài tối thiểu là 8 ký tự

Trang 27

17

- Mật khẩu phải bao gồm chữ số, chữ cái hoa, chữ cái thường và ký tự đặc biệt

- Thời gian hiệu lực của mật khẩu là 90 ngày

- Khi đổi mật khẩu: mật khẩu mới không được trùng với mật khẩu cũ

2.3 Các ca kiểm thử ATTT

Với các nguy cơ mất an toàn thông tin đã mô tả ở mục 2.2, kiểm thử viên có trách nhiệm phân tích với từng chức năng của hệ thống sẽ có nguy cơ mắc những lỗi

an toàn thông tin nào để từ đó đưa ra các ca kiểm thử tương ứng

Mỗi lỗ hổng bảo mật này có thể xuất hiện ở nhiều phần khác nhau của một hệ thống Bởi vậy, chúng tôi sẽ phân một ứng dụng web thành 12 chức năng, được đánh dấu từ F2 đến F13 Các chức năng này gồm:

- F2 Chức năng Đăng nhập – Đăng xuất

- F11 Chức năng Trang có chuyển hướng

- F12 Chức năng liên quan đến dữ liệu nhạy cảm

- F13 Chức năng liên quan đến mật khẩu

Phần này phân tích từng chức năng và các nguy cơ về ATTT mà chức năng đó có khả năng mắc phải Riêng có một số nguy cơ, một ứng dụng web chỉ có khả năng mắc phải

ở một điểm duy nhất của hệ thống Các trường hợp này được nhóm thành một tập các

ca kiểm thử mức chung (đánh dấu là F1) Các ca kiểm thử mức chung là các ca kiểm thử ATTT chỉ cần thực hiện 1 lần là có khả năng kiểm tra cho toàn bộ hệ thống Từ những phân tích trên, chúng tôi tổng hợp thành bảng 2.1

Trang 28

Nguy cơ mất ATTT tương ứng Số ca

F2

Ca kiểm thử cho chức năng Đăng nhập –

- Mã ca kiểm thử: mỗi ca kiểm thử có 1 mã riêng được hình thành theo quy tắc

Nhóm chức năng (F)_Rủi ro (R)_số thứ tự

- Mục đích kiểm thử: mô tả tóm tắt mục địch cụ thể của từng ca kiểm thử

- Các bước thực hiện: mô tả chi tiết từng bước thực hiện để phát hiện ra lỗ hổng

về ATTT Để thực hiện được các ca kiểm thử này, chúng tôi dùng thêm các công cụ hỗ trợ trong quá trình kiểm thử như firebug (để xem mã nguồn phía trình duyệt) và tamper data (để bắt gọi tin gửi lên server)

- Kết quả mong muốn: mô tả kết quả đầu ra của hệ thống khi hệ thống không có

lỗi

- Ghi chú: mô tả lại phạm vi áp dụng với từng ca kiểm thử, biểu hiện của hệ

thống khi mắc lỗi và giải thích cụ thể từng lỗi

Trang 29

19

F1 Ca kiểm thử mức chung

Dựa vào công cụ hỗ trợ như firebug, chúng tôi có thể thay đổi dữ liệu cookies của hệ thống, từ đó chiếm quyền điều khiển, nhằm mục đích kiểm tra xem hệ thống có bị các lỗi Session Hijacking hay không Ngoài ra, firebug cũng hỗ trợ chúng tôi kiểm tra việc hệ thống thiết lập thuộc tính HTTP only Các trường hợp này được chúng tôi thiết kế thành các ca kiểm thử như bảng 2.3

Bảng 2.3 Các ca kiểm thử chỉ cần kiểm tra một lần trên toàn bộ hệ thống

Mã ca

kiểm thử Mục đích kiểm thử Các bước thực hiện mong muốn Kết quả Ghi chú

CHỨC NĂNG: Các case chỉ kiểm tra 1 lần trên cả hệ thống

F1_R5_1

Session Hijacking (Kiểm tra lỗi

2 tài khoản,

2 trình duyệt, trên cùng 1 máy)

1 Trên Firefox: Đăng nhập vào hệ thống với Tài khoản A

có quyền cao hơn tài khoản B

2 Trên Chrome: Đăng nhập vào hệ thống với Tài khoản

+ Thay cookie của tài khoản B bằng cookie của tài khoản

A và lưu lại (document.cookie = "JSESSIONID =

<cookie của tài khoản A>") + Refresh URL trên trình duyệt của B với cookie mới

Tài khoản B không tấn công được vào tài khoản A (không thực hiện được tháo tác thuộc tài khoản A hoặc view được thông tin thuộc tài khoản A hoặc cả

2 bị hết session)

- Phạm vi kiểm thử: 1 lần

- Biểu hiện lỗi: Tài khoản

B thực hiện được các quyền của tài khoản A

- Giải thích lỗi: Lỗi session hijacking không cho phép 2 phiên truy cập đồng thời, session được xây dựng từ các thông tin người dùng: IP, trình duyệt, địa chỉ mac

Trang 30

20

F1_R5_2

Session Hijacking (Kiểm tra lỗi

1 user có tài khoản, 1 user không

có tài khoản,

2 trình duyệt, trên cùng 1 máy)

1 Trên Firefox:

+ Đăng nhập vào hệ thống với Tài khoản A có quyền vào

hệ thống + Dùng tiện ích để lấy cookie của tài khoản A: Firebug/

Net/ Click Link/ cookies + Copy link trên thanh address

2 Trên Chrome:

+ Paste link vừa copy trên Firefox + Delete cookies cũ (F12/ resources/ cookies/ địa chỉ hệ thống đang test/ Chuột phải vào cookies/ delete)

+ Sửa cookie hiện tại bằng cookie của tài khoản A và lưu lại (gõ lệnh: document.cookie = "JSESSIONID = <cookie của tài khoản A>")

3 Refresh URL trên Chrome vừa thay đổi cookie mới

Trên Chrome không vào được tài khoản A (không thực hiện được thao tác thuộc tài khoản

A hoặc view được thông tin thuộc tài khoản

A hoặc cả 2 bị hết session)

- Phạm vi kiểm thử: 1 lần

- Biểu hiện lỗi: Trên Chrome chiếm được các quyền của tài khoản A

Trang 31

21

F1_R5_3

Session Hijacking (Kiểm tra lỗi

2 tài khoản,

1 trình duyệt, trên 2 máy)

1 Máy 1: Đăng nhập vào hệ thống với Tài khoản A có quyền cao hơn tài khoản B bằng trình duyệt Chrome

2 Máy 2: Đăng nhập vào hệ thống với Tài khoản B bằng trình duyệt Chrome

3 Máy 1: Dùng tiện ích để lấy cookie của tài khoản A (Chrome/ F12/ resources/ cookies/ địa chỉ hệ thống đang test)

4 Máy 2:

+ Xóa cookie hiện tại (Chrome/ F12/ resources/ cookies/

địa chỉ hệ thống đang test/ Chuột phải vào cookies/

delete) + Thay cookie của tài khoản B bằng cookie của tài khoản

A và lưu lại (Console/ gõ lệnh: document.cookie =

"JSESSIONID = <cookie của tài khoản A>") + Refresh URL trên trình duyệt của B vừa thay đổi cookie mới

+ Thực hiện cùng thao tác tài khoản A có quyền, nhưng tài khoản B không có quyền

Tài khoản B không tấn công được vào tài khoản A (không thực hiện được tháo tác thuộc tài khoản A hoặc view được thông tin thuộc tài khoản A hoặc cả

2 bị hết session)

- Phạm vi kiểm thử: 1 lần

- Biểu hiện lỗi: Tài khoản

B thực hiện được các quyền của tài khoản A

Trang 32

22

F1_R5_4

Session Hijacking (Kiểm tra lỗi

1 user có tài khoản, 1 user không

có tài khoản,

1 trình duyệt, trên 2 máy)

1 Trên máy 1:

+ Đăng nhập vào hệ thống với Tài khoản A có quyền vào

hệ thống + Dùng tiện ích để lấy cookie của tài khoản A (Chrome/

F12/ resources/ cookies/ địa chỉ hệ thống đang test) + Copy link trên thanh address

A hoặc view được thông tin thuộc tài khoản

A hoặc cả 2 bị hết session)

- Phạm vi kiểm thử: 1 lần

- Biểu hiện lỗi: Trên Chrome chiếm được các quyền của tài khoản A

F1_R12_

5

Kiểm tra việc cố tình tạo trang lỗi

để khai thác thông tin nhạy cảm của hệ thống

1 Đăng nhập vào hệ thống

2 Sửa 1 thông tin trên đường link rồi enter VD:

+ Link gốc:

http://tuyendung.viettel.com.vn/RMSPortal/Index.do + Link sau sửa:

http://tuyendung.viettel.com.vn/RMSPortal/abc123

5 Kiểm tra thông tin hiển thị lên có chứa các thông tin nhạy cảm không (VD: sessionid, CMND, số tài khoản, phiên bản tomcat )

- Hiển thị trang trắng hoặc thông báo Có lỗi xảy ra (Nhưng không hiển thị các thông tin của hệ thống)

- Phạm vi kiểm thử: 1 lần

- Biểu hiện lỗi: Trình duyệt hiển thị kết quả lỗi, bao gồm các thông tin: phiên bản tomcat,version

dự án, full ra trang lỗi do không bắt ngoại lệ làm thất thoát thông tin

Trang 33

23

F1_R10_

6

Kiểm tra HttpOnly Cookie

Pre: Cài và chạy Add-ons cookie và FireBug cho FireFox

1 Đăng nhập vào ứng dụng

2 Dùng firebug kiểm tra trường HttpOnly của Jsession

- Firefox: Firebug -> Cookies -> SID/ JSessionID/ ->

kiểm tra HttpOnly

- Chrome: F12/ resources/ cookies/ ip server/ xem thuộc tính HTTP

- Nếu xem thuộc tính only bằng cách view, đôi lúc view trên firebug thì không có thuộc tính only => nên tốt nhất

là xem bằng cách gõ lệnh document.cookie hoặc xem trên trình duyệt Chrome

SID/

JSessionID/ có giá trị http only

- Phạm vi kiểm thử: 1 lần

- Biểu hiện lỗi: SID/ JSessionID/ không có giá trị HttpOnly

- Giải thích lỗi: Hacker

có thể sử dụng javascript

để đánh cắp cookies của người dùng

Trang 34

24

F2 Ca kiểm thử cho chức năng Đăng nhập – Đăng xuất

Với chức năng Đăng nhập – Đăng xuất cũng thường mắc các lỗi SQL injection, Session fixation, Session Hijacking Để kiểm tra lỗi SQL injection thì chúng tôi chỉ cần tiếp cận hệ thống thông qua việc nhập dữ liệu đầu vào trên giao diện Một số trường hợp có thể sử dụng công cụ firebug để hỗ trợ nếu hệ thống có điều kiện ngăn chặn phía client gây ảnh hưởng đến việc nhập liệụ Để kiểm tra các lỗi liên quan đến session, chúng tôi dùng các công cụ hỗ trợ như firebug hoặc tamper data để sửa hoặc xem dữ liệụ Việc thiết kê từng trường hợp để kiểm tra được chúng tôi mô tả trong bảng 2.4

Bảng 2.4 Các ca kiểm thử với màn hình có chức năng Đăng nhập – Đăng xuất

Mã ca

kiểm thử Mục đích kiểm thử Các bước thực hiện mong muốn Kết quả Ghi chú

CHỨC NĂNG: Đăng nhập/ Đăng xuất

3.Click Đăng nhập

Hệ thống thông báo tài khoản không tồn tại

- Phạm vi kiểm thử: 1 lần

- Biểu hiện lỗi: Ứng dụng có thể bắn lỗi 500, hoặc trên trình duyệt in ra câu truy vấn SQL lỗi hay đăng nhập thành công, khi đó có thể xác định ứng dụng

đã bị mắc lỗi SQL Injection

- Giải thích lỗi: Câu SQL đc thành lập: select * from user where username='test' or '1'='1' and password= functionMahoắpass')

=> nếu thay username như case thì sẽ select được toàn bộ bảng user (do thứ

tự ưu tiên các toán tử là: not, and, or)

Trang 35

25

F2_R6_2

Session fixation (login)

1 Mở tool hỗ trợ để lấy link của các action (firebug hoặc tamper data)

2 Gõ link vào hệ thống (đ/c ứng dụng)

3 Thực hiện thao tác login

4 Xem SessionID khi chưa login và sau khi login vào hệ thống

<Chú ý: phải kiểm tra cookies trước và sau khi đăng nhập của cùng địa chỉ server của ứng dụng>

SessionID trước và sau khi đăng nhập là khác nhau

có thể đăng nhập vào hệ thống thông qua 1 session id do hacker tạo sẵn thay vì do trình chủ tự sinh Do đó phải hủy bỏ SessionId (SID/

JSessionID/…) đc cung cấp bởi trình duyệt của người dùng khi đăng nhập

và luôn tạo SID mới sau khi đăng nhập thành công

3 Thực hiện thao tác logout

4 Xem SessionID khi chưa logout và sau khi logout khỏi hệ thống

<Chú ý: phải kiểm tra cookies trước và sau khi đăng nhập của cùng địa chỉ server của ứng dụng >

SessionID trong khi login và sau khi logout là khác nhau

- Phạm vi kiểm thử: 1 lần

- Biểu hiện lỗi: SessionID trong khi login và sau khi logout là giống nhau nhau

- Giải thích lỗi: Hacker có thể lợi dụng lỗ hổng này để lấy Session ID

và đăng nhập vào hệ thống

Trang 36

F2_R9_5

User enumeration (thông báo lỗi khi đăng nhập)

Thực hiện đăng nhập với 3 trường hợp sau:

1 Thực hiện đăng nhập với username không tồn tại

2 Thực hiện đăng nhập với password sai, username đúng

3 Thực hiện đăng nhập với password sai, username sai

Chỉ thông báo chung sai account đăng nhập

- Máy 2 đăng nhập không thành công

3 Logout Tài khoản A trên máy 1

4 Login vào Tài khoản A trên máy 2

Máy 2 đăng nhập thành công

- Phạm vi kiểm thử: 1 lần

- Biểu hiện lỗi: Máy 2 vẫn không đăng nhập được

Trang 37

27

F2_R5_8

Session Hijacking (Kiểm tra lỗi 1 tài khoản, trên

2 trình duyệt)

1 Đăng nhập vào hệ thống với Tài khoản A trên trình duyệt 1

2 Đăng nhập vào hệ thống với Tài khoản A trên trình duyệt 2

- Máy 1 đăng nhập thành công

- Máy 2 đăng nhập không thành công

2 trình duyệt)

1 Login vào hệ thống với Tài khoản A trên trình duyệt 1

2 Login vào hệ thống với Tài khoản A trên trình duyệt 2 => không thành công

3 Logout Tài khoản A trên trình duyệt

1

4 Login vào Tài khoản A trên trình duyệt 2

Máy 2 đăng nhập thành công

1 Thực hiện đăng nhập vào hệ thống

2 Kiểm tra giao thức:

Vào firebug/ Net/ Xem link

Sử dụng giao thức HTTPS

- Phạm vi kiểm thử: 1 lần

- Biểu hiện lỗi: Không sử dụng giao thức https

Trang 38

28

F3 Ca kiểm thử cho chức năng Tìm kiếm

Chức năng Tìm kiếm thường gặp các lỗi XSS và SQL Injection hoặc các lỗi liên quan đến việc xác thực phân quyền (lỗi leo quyền) Phương pháp tiếp cận hệ thống để kiểm tra các lỗi này là dựa vào việc nhập dữ liệu đầu vào trên giao diện có sử dụng thêm các công cụ hỗ trợ như firebug Chúng tôi thiết kế các trường hợp kiểm tra cho chức năng Tìm kiếm như trong bảng 2.5

Bảng 2.5 Các ca kiểm thử với màn hình có chức năng Tìm kiếm

Đối với trang tìm kiếm:

1 Mở firebug/ Click element lên control

2 Sửa value của item dùng làm tiêu chí tìm kiếm như sau: <tiêu chí tìm kiếm> or 1=1

3 Tìm kiếm

Hệ thống:

+ Thông báo không tìm thấy

dữ liệu + Hoặc thông báo có lỗi xảy ra (Do có ngoại lệ khi server ép kiểu xâu nhập vào về kiểu số)

- Phạm vi kiểm thử: Mỗi tiêu chí tìm kiếm tương ứng 1 case (chỉ cần test khi tiêu chí này là tiêu chí tìm kiếm tuyệt đối)

- Biểu hiện lỗi: Hệ thống hiển thị tất cả dữ liệu (mà không lọc theo tiêu chí đã nhập)

- Giải thích lỗi: Câu truy vấn tìm kiếm: select * <TableName> where

<FieldName> = '<tiêu chí tìm kiếm>' or '1'='1'

Trang 39

2 Check hiển thị dữ liệu trong Combobox/

Data picker/ Popup A

Dữ liệu được hiển thị lên không bị lỗi, hiển thị đúng định dạng đã nhập ở danh mục B

- Phạm vi kiểm thử: Mỗi trường tương ứng 1 case (chỉ cần test với combo/ datapicker/ popup lấy dữ liệu từ DB, được nhập từ danh mục hoặc 1 phần khác của hệ thống)

- Biểu hiện lỗi: chỉ hiển thị số 1

1 Trong danh mục B, tạo dữ liệu nhập NAME

là chuỗi script mã HEXA dạng URL:

%3cb%3e1%3c%2fb%3e

2 Check hiển thị dữ liệu trong Combobox/

Data picker/ Popup A

Dữ liệu được hiển thị lên không bị lỗi, hiển thị đúng định dạng đã nhập ở danh mục B

- Phạm vi kiểm thử: Mỗi trường tương ứng 1 case (chỉ cần test với combo/ datapicker/ popup lấy dữ liệu từ DB, được nhập từ danh mục hoặc 1 phần khác của hệ thống)

- Biểu hiện lỗi: chỉ hiển thị số 1

1 Trong danh mục B, tạo dữ liệu nhập NAME

là chuỗi script mã HEXA dạng HTML:

&lt;b&gt;1&lt;/b&gt;

2 Check hiển thị dữ liệu trong Combobox/

Data picker/ Popup A

Dữ liệu được hiển thị lên không bị lỗi, hiển thị đúng định dạng đã nhập ở danh mục B

- Phạm vi kiểm thử: Mỗi trường tương ứng 1 case (chỉ cần test với combo/ datapicker/ popup lấy dữ liệu từ DB, được nhập từ danh mục hoặc 1 phần khác của hệ thống)

- Biểu hiện lỗi: chỉ hiển thị số 1 Textbox/ Textarea (trường lưu trong DB là trường số)

dữ liệu + Hoặc thông

- Phạm vi kiểm thử: Mỗi tiêu chí tìm kiếm tương ứng 1 ca (kiểm tra khi tiêu chí này là tiêu chí tìm kiếm tuyệt đối)

- Biểu hiện lỗi: Hệ thống hiển thị

Trang 40

30

báo Có lỗi xảy ra (Do có ngoại lệ khi server ép kiểu xâu nhập vào về kiểu số)

tất cả dl (không lọc theo tiêu chí nhập)

- Giải thích lỗi: Câu truy vấn tìm kiếm: select * <TableName> where

<FieldName> = '<tiêu chí tìm kiếm>' or '1'='1'

2 Các tiêu chí khác để trống

3 Tìm kiếm

Hệ thống thông báo: không tìm thấy dữ liệu

- Phạm vi kiểm thử: Mỗi tiêu chí tìm kiếm tương ứng 1 ca

- Biểu hiện lỗi: Hệ thống hiển thị tất cả dữ liệu (mà không lọc theo tiêu chí đã nhập)

- Giải thích lỗi: Câu truy vấn tìm kiếm: select * <TableName> where

<FieldName> like '%<tiêu chí tìm kiếm>' or '1%'='1%'

Textbox/ Textarea/ các control nhập DL mà Hệ thống có hiển thị DL nhập đó trên Hệ thống (trường lưu trong DB là xâu)

- Phạm vi kiểm thử:

+ Chỉ cần test với trường hợp trong

KQ tìm kiếm có hiển thị Script nhập vào VD: hiện thông báo "KQ tìm kiếm theo tiêu chí … Là: " + Mỗi tiêu chí tìm kiếm tương ứng

1 case

- Biểu hiện lỗi: Full ra alert hoặc hiển thị trang lỗi

Ngày đăng: 25/03/2015, 10:34

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] Mạnh Vỹ (2014), “Mối đe dọa của tội phạm mạng công nghệ cao và chiến tranh mạng”, Tạp chí bưu chính viễn thông, tr.1 Sách, tạp chí
Tiêu đề: Mối đe dọa của tội phạm mạng công nghệ cao và chiến tranh mạng”, "Tạp chí bưu chính viễn thông
Tác giả: Mạnh Vỹ
Năm: 2014
[2] Đức Thiện (2013), “Chủ động trước nguy cơ tấn công mạng”, Báo Hà Nội mới, tr.1 Sách, tạp chí
Tiêu đề: Chủ động trước nguy cơ tấn công mạng”, "Báo Hà Nội mới
Tác giả: Đức Thiện
Năm: 2013
[3] Đinh Thị Thiên Anh (2011), Nghiên cứu kiểm thử bảo mật website, Luận văn Thạc sĩ, Trường Đại học Đà Nẵng, tr.5,13 Sách, tạp chí
Tiêu đề: Nghiên cứu kiểm thử bảo mật website
Tác giả: Đinh Thị Thiên Anh
Nhà XB: Trường Đại học Đà Nẵng
Năm: 2011
[4] Nguyễn Thế Phục (2012), “Kĩ thuật tấn công CROSS-SITE SCRIPTING”, Thư viện khoa học, tr.1-2.Tiếng Anh Sách, tạp chí
Tiêu đề: Kĩ thuật tấn công CROSS-SITE SCRIPTING”, "Thư viện khoa học
Tác giả: Nguyễn Thế Phục
Năm: 2012
[5] Jane Radatz, Chairperson (1990), IEEE standard glossary of software engineering terminology, Universidad Nacional de Colombia, USA Sách, tạp chí
Tiêu đề: IEEE standard glossary of software engineering terminology
Tác giả: Jane Radatz, Chairperson
Năm: 1990
[6] Ron Patton (2005), Sofware testing, Sams Publishing, the United States of America Sách, tạp chí
Tiêu đề: Sofware testing
Tác giả: Ron Patton
Nhà XB: Sams Publishing
Năm: 2005
[7] Paco Hope, Ben Waltber (2009), Web Security Testing Cookbook, O’Reilly Media, the United States of America Sách, tạp chí
Tiêu đề: Web Security Testing Cookbook
Tác giả: Paco Hope, Ben Waltber
Nhà XB: O’Reilly Media
Năm: 2009
[8] William G.J. Halfond, Jeremy Viegas, “Alessandro Orso (2010), A Classification of SQL Injection Attacks and Countermeasures”, College of Computing Georgia Institute of Technology, tr.2 Sách, tạp chí
Tiêu đề: A Classification of SQL Injection Attacks and Countermeasures
Tác giả: William G.J. Halfond, Jeremy Viegas, Alessandro Orso
Nhà XB: College of Computing Georgia Institute of Technology
Năm: 2010
[9] Lieven Desmet, Thomas Heyman, Wim Maes, Wouter Joosen (2009), Browser Protection against Cross-Site Request Forgery, ACM, New York Sách, tạp chí
Tiêu đề: Browser Protection against Cross-Site Request Forgery
Tác giả: Lieven Desmet, Thomas Heyman, Wim Maes, Wouter Joosen
Năm: 2009
[10] HKSAR (2008), Web application security, The Government of the Hong Khôngng Special Administrative Region, Hong Khôngng Sách, tạp chí
Tiêu đề: Web application security
Tác giả: HKSAR
Nhà XB: The Government of the Hong Kong Special Administrative Region
Năm: 2008
[11] Willem Burgers, Roel Verdult, Markhông van Eekelen (2012), Prevent Session Hijacking by Binding the Session to the Cryptographic Network Credentials, Institute for Computing and Information Sciences Radboud University Nijmegen, The Netherlands Sách, tạp chí
Tiêu đề: Prevent Session Hijacking by Binding the Session to the Cryptographic Network Credentials
Tác giả: Willem Burgers, Roel Verdult, Markhông van Eekelen
Nhà XB: Institute for Computing and Information Sciences Radboud University Nijmegen
Năm: 2012
[12] Bhavna C.K. Nathani Erwin Adi (2012), Website Vulnerability to Session Fixation Attacks, School of Computer Science, Binus International, Bina Nusantara University, Indonesia Sách, tạp chí
Tiêu đề: Website Vulnerability to Session Fixation Attacks
Tác giả: Bhavna C.K. Nathani, Erwin Adi
Nhà XB: School of Computer Science, Binus International, Bina Nusantara University
Năm: 2012
[13] Lark Allen, Kelly Purcell (2009), “Encrypting Sensitive Data”, Mortgage Technology, tr.1-2 Sách, tạp chí
Tiêu đề: Encrypting Sensitive Data”, "Mortgage Technology
Tác giả: Lark Allen, Kelly Purcell
Năm: 2009
[14] Jordan DelGrande (2007), “Web Application Username Enumeration”, Security Technology Science Pty Ltd, tr.3-5 Sách, tạp chí
Tiêu đề: Web Application Username Enumeration”, "Security Technology Science Pty Ltd
Tác giả: Jordan DelGrande
Năm: 2007
[15] David Evans, Yuchen Zhou (2010), “Why Aren’t HTTP-only Cookies More Widely Deployed?”, University of Virginia, tr.1-2 Sách, tạp chí
Tiêu đề: Why Aren’t HTTP-only Cookies More Widely Deployed?”, "University of Virginia
Tác giả: David Evans, Yuchen Zhou
Năm: 2010
[16] Susanna Bezold, Johanna Curiel, Jim Manico (2014), “Unvalidated Redirects and Forwards Cheat Sheet”, OWASP, tr.1-2 Sách, tạp chí
Tiêu đề: Unvalidated Redirects and Forwards Cheat Sheet”, "OWASP
Tác giả: Susanna Bezold, Johanna Curiel, Jim Manico
Năm: 2014
[17] Dr. E. Benoist (2012), Information Leakage and Improper Error Handling, IIG University of Freiburg, Germany Sách, tạp chí
Tiêu đề: Information Leakage and Improper Error Handling
Tác giả: Dr. E. Benoist
Nhà XB: IIG University of Freiburg, Germany
Năm: 2012
[18] Uwe Aickelin, Liming Wang, Xiuling Chang, Zhongjie Ren, Haichang Gao, Xiyang Liu (2007), Against Spyware Using CAPTCHA in Graphical Password Scheme, Software Engineering Institute Xidian University, UK Sách, tạp chí
Tiêu đề: Against Spyware Using CAPTCHA in Graphical Password Scheme
Tác giả: Uwe Aickelin, Liming Wang, Xiuling Chang, Zhongjie Ren, Haichang Gao, Xiyang Liu
Nhà XB: Software Engineering Institute Xidian University
Năm: 2007
[19] USG Office (2012), Strong Password Standard, USG Office of Information Security, UK Sách, tạp chí
Tiêu đề: Strong Password Standard
Tác giả: USG Office
Nhà XB: USG Office of Information Security
Năm: 2012

HÌNH ẢNH LIÊN QUAN

Hình 1.1. : Kiến trúc ứng dụng Web và Database - Xây dựng các ca kiểm thử an toàn thông tin cho ứng dụng web
Hình 1.1. Kiến trúc ứng dụng Web và Database (Trang 15)
Hình 1.2. : Mô hình hoạt động của một ứng dụng Web  Trình  khách  (hay  còn  gọi  là  trình  duyệt)  thường  được  sử  dụng  là  Internet - Xây dựng các ca kiểm thử an toàn thông tin cho ứng dụng web
Hình 1.2. Mô hình hoạt động của một ứng dụng Web Trình khách (hay còn gọi là trình duyệt) thường được sử dụng là Internet (Trang 15)
Hình 1.3. Quy trình kiểm thử ATTT - Xây dựng các ca kiểm thử an toàn thông tin cho ứng dụng web
Hình 1.3. Quy trình kiểm thử ATTT (Trang 18)
Bảng 2.2. Bảng tổng hợp các nguy cơ mất ATTT tương ứng với từng chức năng - Xây dựng các ca kiểm thử an toàn thông tin cho ứng dụng web
Bảng 2.2. Bảng tổng hợp các nguy cơ mất ATTT tương ứng với từng chức năng (Trang 28)
Bảng 2.5. Các ca kiểm thử với màn hình có chức năng Tìm kiếm - Xây dựng các ca kiểm thử an toàn thông tin cho ứng dụng web
Bảng 2.5. Các ca kiểm thử với màn hình có chức năng Tìm kiếm (Trang 38)
Bảng 2.7. Các ca kiểm thử với màn hình có chức năng Sửa - Xây dựng các ca kiểm thử an toàn thông tin cho ứng dụng web
Bảng 2.7. Các ca kiểm thử với màn hình có chức năng Sửa (Trang 54)
Bảng 2.8. Các ca kiểm thử với màn hình có chức năng Xóa - Xây dựng các ca kiểm thử an toàn thông tin cho ứng dụng web
Bảng 2.8. Các ca kiểm thử với màn hình có chức năng Xóa (Trang 70)
Bảng 2.11. Các ca kiểm thử với màn hình có chức năng Upload - Xây dựng các ca kiểm thử an toàn thông tin cho ứng dụng web
Bảng 2.11. Các ca kiểm thử với màn hình có chức năng Upload (Trang 88)
Bảng 2.12. Các ca kiểm thử với màn hình có chức năng Import - Xây dựng các ca kiểm thử an toàn thông tin cho ứng dụng web
Bảng 2.12. Các ca kiểm thử với màn hình có chức năng Import (Trang 94)
Bảng 2.13. Các ca kiểm thử với màn hình có chức năng Chuyển hướng - Xây dựng các ca kiểm thử an toàn thông tin cho ứng dụng web
Bảng 2.13. Các ca kiểm thử với màn hình có chức năng Chuyển hướng (Trang 103)
Bảng 2.14. Các ca kiểm thử với chức năng có dữ liệu nhạy cảm - Xây dựng các ca kiểm thử an toàn thông tin cho ứng dụng web
Bảng 2.14. Các ca kiểm thử với chức năng có dữ liệu nhạy cảm (Trang 104)
Bảng 2.15. Các ca kiểm thử với màn hình có chức năng liên quan đến mật khẩu - Xây dựng các ca kiểm thử an toàn thông tin cho ứng dụng web
Bảng 2.15. Các ca kiểm thử với màn hình có chức năng liên quan đến mật khẩu (Trang 106)
Hình 3.1. Chức năng quản lý sự kiện - Xây dựng các ca kiểm thử an toàn thông tin cho ứng dụng web
Hình 3.1. Chức năng quản lý sự kiện (Trang 108)
Hình 3.2. Chức năng quản lý các ca kiểm thử ATTT trên ứng dụng web - Xây dựng các ca kiểm thử an toàn thông tin cho ứng dụng web
Hình 3.2. Chức năng quản lý các ca kiểm thử ATTT trên ứng dụng web (Trang 110)
Hình 3.3. Chức năng sinh tập các ca kiểm thử cho từng chức năng trên ứng dụng web - Xây dựng các ca kiểm thử an toàn thông tin cho ứng dụng web
Hình 3.3. Chức năng sinh tập các ca kiểm thử cho từng chức năng trên ứng dụng web (Trang 111)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w