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

Một phần của tài liệu (LUẬN văn THẠC sĩ) xây dựng các ca kiểm thử an toàn thông tin cho ứng dụng web (Trang 38)

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: Tìm kiếm

Combobox/ Data picker/ Popup

F3_R1_ 1

SQL Injection (Kiểm tra lỗi với trƣờng trong DB là tiêu chí tìm kiếm tuyệt đối)

Đố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'

F3_R2_ 2 XSS (Kiểm tra việc hiển thị các giá trị với script HTML)

Pre: Giả sử Combobox/ Data picker/ Popup A hiển thị NAME đƣợc tạo từ danh mục B. 1. Trong danh mục B, tạo dữ liệu nhập NAME là chuỗi script: <b>1</b>

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

F3_R2_ 3 XSS (Kiểm tra việc hiển thị các giá trị với script HTML đƣợc mã hóa hexa dạng URL)

Pre: Giả sử Combobox/ Data picker/ popup A hiển thị NAME đƣợc tạo từ danh mục B. 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

F3_R2_ 4 XSS (Kiểm tra việc hiển thị các giá trị với script HTML đƣợc mã hóa hexa dạng HTML)

Pre: Giả sử Combobox/ Data picker/ Popup A hiển thị NAME đƣợc tạo từ danh mục B. 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ố)

SQL Injection

(Kiểm tra lỗi 1. Đối với trang tìm kiếm, nhập dữ liệu vào ô

Hệ thống: + Thông báo

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

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'

Textbox/ Textarea (trƣờng lƣu trong DB là xâu)

F3_R1_ 6

SQL Injection (Kiểm tra lỗi với trƣờng trong DB là xâu)

1. Đối với trang tìm kiếm, nhập dữ liệu vào ô tìm kiếm nhƣ sau: <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)

F3_R2_ 7

XSS (Kiểm tra lỗi với script HTML)

1. Nhập vào đoạn script <b>1</b> hoặc: <script>alert(“XSS”)</script> 2. Nhập tiêu chí khác hợp lệ 3. Tìm kiếm Hiện thị trang không tìm thấy hoặc trang trắng - 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àọ 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

F3_R2_ 8

XSS (Kiểm tra lỗi với script HTML đƣợc mã hóa Hexa dạng URL)

1. Nhập vào đoạn script <b>1</b> nhƣng đƣợc mã hóa dƣới dạng Hexa dạng URL:

%3cb%3e1%3c%2fb%3e 2. Nhập tiêu chí khác hợp lệ 3. Tìm kiếm Hiện thị trang không tìm thấy hoặc trang trắng - 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àọ 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

F3_R2_ 9

XSS (Kiểm tra lỗi với script HTML đƣợc mã hóa Hexa dạng HTML)

1. Nhập vào đoạn script <b>1</b> nhƣng đƣợc mã hóa dƣới dạng Hexa dạng HTML:

&lt;b&gt;1&lt;/b&gt; 2. Nhập tiêu chí khác hợp lệ 3. Tìm kiếm Hiện thị trang không tìm thấy hoặc trang trắng - 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àọ 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

32 Hành động (action) F3_R4_ 10 Kiểm tra xác thực, phân quyền (Kiểm tra URL Manipulation - Lỗi leo quyền với các action có phân quyền thực hiện)

1. Đăng nhập bằng user 1

2. Sửa giá trị của trƣờng đƣợc phân quyền: có thể thực hiện 1 trong các cách sau:

- Cách 1: Vào firebug/ HTML/ di chuyển con trỏ đến trƣờng đƣợc phân quyền miền dữ liệu => Sửa Value/ID = Value/ID tồn tại trong DB, nhƣng là miền dữ liệu không thuộc quyền của user 1 => thực hiện action

- Cách 2:

+ Tab 1: Thực hiện thao tác/ Copy Location with Parameters của thao tác

+ Tab 2: Paste link trên thanh ađress. Nếu cần thì:

=> sửa ID/tham số của bản ghi vừa thực hiện thao tác = 1 ID/tham số tồn tại trong DB => sửa các tham số, nếu hệ thống tự reset tham số đó khi thực hiện thao tác (VD: 1 số hệ thống đƣợc xử lý reset token trƣớc mỗi thao tác nhƣ thêm, sửa, xóạ..)

+ Tab 1: Đăng xuất khỏi hệ thống

+ Tab 2: enter để chạy link

- Cách 3: Dùng tamper

Thông báo không có quyền thực hiện action

- Phạm vi kiểm thử: Action làm thay đổi DL trong DB (thêm, sửa, xóa, download, upload, import, action nghiệp vụ quan trọng...) - Biểu hiện lỗi: Thực hiện đƣợc action với bản ghi có id/tham số vừa sửa

F3_R4_ 11 Kiểm tra xác thực, phân quyền (Kiểm tra URL Manipulation - Lỗi leo quyền - 2 user với các action có phần quyền Miền dữ liệu) 1. Firefox: + Đăng nhập bằng user 1

+ Sửa giá trị của trƣờng đƣợc phân quyền: Vào firebug-> HTML-> di chuyển con trỏ đến trƣờng đƣợc phân quyền miền dữ liệu -> lấy Value/ID

2. Chrome:

+ Đăng nhập bằng user 2

+ Sửa giá trị của trƣờng đƣợc phân quyền: Vào firebug-> HTML-> di chuyển con trỏ đến trƣờng đƣợc phân quyền miền dữ liệu -> Sửa Value/ID = Miền dữ liệu thuộc quyền của user 1, không thuộc quyền của user 2

+ Thực hiện action (Chú ý: khi thực hiện action, user 1 ở trình duyệt firefox vẫn đang đăng nhập và chƣa bị hết session)

Thông báo không có quyền thực hiện action

- Phạm vi kiểm thử: Các action có liên quan đến phân quyền miền dữ liệụ VD:

+ Đơn vị có phân quyền miền DL cho từng user

+ Combo, listbox: có phân quyền mỗi user 1 miền

+ Chức năng mà mỗi user có phạm vi quyền khác nhau (thêm, sửa, xóa, download, upload …)

+ Chú ý: 1 số trƣờng hợp thêm mới mà không gửi value/ ID đƣợc phân quyền miền DL lên server thì thƣờng không cần check lỗi này - Biểu hiện lỗi: Hệ thống cho phép thực hiện action trên trên Miền dữ liệu không đƣợc phân quyền (lỗi leo quyền) F3_R4_ 12 Kiểm tra xác thực, phân quyền (Kiểm tra URL Manipulation - Lỗi leo quyền

1. Đăng nhập bằng user 1

2. Chọn dữ liệu mà user 1 không có quyền thực hiện action (do có ràng buộc, VD: bản ghi bị khóa - không cho phép thực hiện action): lấy ID dữ liệu của thao tác

3. Chọn dữ liệu mà user 1 có quyền thực hiện:

Thông báo không có quyền thực hiện action (việc check validate các ràng

- Phạm vi kiểm thử: Check với trƣờng hợp:

+ Các action tác động đến các DL đã bị ràng buộc không cho phép thực hiện action (VD: Thêm, sửa, xóa… với các DL đã bị khóa hoặc

34 F3_R12 _13 Để lộ thông tin do xử lý không đúng cách (Không bắt exception dẫn đến full ra trang lỗi khi gặp ngoại lệ)

1. Dùng các tool hỗ trợ để tạo DL ngoại lệ gửi lên server (VD: firebug, tamper datạ..)

Ví dụ:

+ Với Tìm kiếm: Có thể xóa control là tiêu chí tìm kiếm => Tìm kiếm

+ Với Thêm mới/ Sửa: nhập DL quá

maxlength của trƣờng trong DB. Cách thực hiện

=> Chỉnh lại maxlength của control (VD: textbox) bằng firebug:

=> Vào Firebug/ HTML/ Click con trỏ inspect (phía trên, bên trái Firebug) => Click vào control trên chƣơng trình => Vào firebug sửa maxlength (maxsize) của textbox quá maxlength lƣu trƣờng đó trong DB (Hệ thống cho phép lƣu tối đa 10 ký tự trong DB, sửa thành 20 ký tự)

=> Nhập DL lớn hơn Maxlength thực (10 ký tự)

=> Nhấn nút thực hiện: Thêm mới/ Sửa/ Đăng nhập/ ….

+ Với Xóa: Vào firebug xóa ID của bản ghi đƣợc click action xóa => Xóa

3. Thực hiện action

Hệ thống forward sang 1 trang thông báo "Có lỗi xảy ra"

- Phạm vi kiểm thử: Tất cả các action trên màn hình (Tìm kiếm, thêm, sửa, xóa, nghiệp vụ, …) - Biểu hiện lỗi: Hệ thống full ra exception do dev chƣa bắt ngoại lệ

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

Chức năng Thêm mới thƣờng gặp các lỗi XSS, SQL Injection, CSRF và 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 Thêm mới nhƣ trong bảng 2.6.

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

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: Thêm mới

Date time

F4_R1_1 SQL Injection (Kiểm tra khi Insert)

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: (SELECT SYSDATE FROM dual) 3. Nhập dữ liệu khác hợp lệ 4. Thêm mới Kết quả mong muốn: - Hệ thống không cho phép Insert - Hoặc cho phép Insert đúng chuỗi dữ liệu nhập vào và hiển thị ra cũng - Phạm vi kiểm thử: Mỗi trƣờng 1 ca - Biểu hiện lỗi: HT Insert DL trong câu truy vấn (giá trị 1) vào DB

- Giải thích lỗi:

+ Câu SQL đƣợc thành lập: Insert into TableName values ((SELECT 1 FROM dual), value2, value3,… );

36

Combobox/ Data picker/ popup

F4_R1_ 2

SQL Injection (Kiểm tra khi Insert)

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: (SELECT 1 FROM dual) 3. Nhập dữ liệu khác hợp lệ 4. Thêm mới - Hệ thống không cho phép Insert - Hoặc cho phép Insert đúng chuỗi dữ liệu nhập vào và hiển thị ra cũng đúng chuỗi đã nhập - Phạm vi kiểm thử: Mỗi trƣờng 1 ca - Biểu hiện lỗi: HT Insert DL trong câu truy vấn (giá trị 1) vào DB

- Giải thích lỗi:

+ Câu SQL đƣợc thành lập: Insert into TableName values ((SELECT 1 FROM dual), value2, value3,… );

+ Câu SQL đƣợc thành lập: update TableName set Field = (SELECT 1 FROM dual) F4_R2_ 3 XSS - Cross site scripting (Kiểm tra việc hiển thị các giá trị trong Combobox/ Data picker/ popup với script HTML)

Pre: Giả sử Combobox/ Data picker/ popup A hiển thị NAME đƣợc tạo từ danh mục B.

1. Trong danh mục B, tạo dữ liệu nhập NAME là chuỗi script: <b>1</b> 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 lấy dự liệu từ danh mục trong DB)

- Biểu hiện lỗi:

+ hiển thị dạng mã hóa khi view lên + hoặc chỉ hiển thị số 1 trong combo

F4_R2_ 4

XSS (Kiểm tra việc hiển thị các giá trị trong Combobox/ Data picker/ popup với script HTML đƣợc mã hóa hexa dạng URL)

Pre: Giả sử Combobox/ Data picker/ popup A hiển thị NAME đƣợc tạo từ danh mục B.

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 lấy dự liệu từ danh mục trong DB)

- Biểu hiện lỗi:

+ hiển thị dạng mã hóa khi view lên + hoặc chỉ hiển thị số 1 trong combo

F4_R2_ 5

XSS (Kiểm tra việc hiển thị các giá trị trong Combobox/ Data picker/ popup với script HTML đƣợc mã hóa hexa dạng

Pre: Giả sử Combobox/ Data picker/ popup A hiển thị NAME đƣợc tạo từ danh mục B.

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 lấy dự liệu từ danh mục trong DB)

- Biểu hiện lỗi:

+ hiển thị dạng mã hóa khi view lên + hoặc chỉ hiển thị số 1 trong combo

38

Textbox/ Textarea (trƣờng lƣu trong DB là trƣờng số)

F4_R1_ 6

SQL Injection (Kiểm tra khi Insert)

1. Trong phần Thêm mới dữ liệu, nhập thông tin sau vào 1 trƣờng textbox: (SELECT 1 FROM dual)

2. Nhập dữ liệu khác hợp lệ 3. Thêm mới - Hệ thống không cho phép Insert - Hoặc cho phép Insert đúng chuỗi dữ liệu nhập vào và hiển thị ra cũng đúng chuỗi đã nhập

- Phạm vi kiểm thử: Mỗi trƣờng tƣơng ứng 1 case

- Biểu hiện lỗi: HT Insert DL trong câu truy vấn (giá trị 1) vào DB

- Giải thích lỗi:

+ Câu SQL đƣợc thành lập: Insert into TableName values ((SELECT 1 FROM dual), value2, value3,… );

+ Câu SQL đƣợc thành lập: update TableName set Field = (SELECT 1 FROM dual)

Textbox/ Textarea (trƣờng lƣu trong DB là xâu)

F4_R1_ 7

SQL Injection (Kiểm tra khi Insert)

1. Trong phần Thêm mới dữ liệu, nhập thông tin sau vào 1 trƣờng textbox: (SELECT 1 FROM dual)

2. Nhập dữ liệu khác hợp lệ 3. Thêm mới - Hệ thống không cho phép Insert - Hoặc cho phép Insert đúng chuỗi dữ liệu nhập vào và hiển thị ra cũng

Một phần của tài liệu (LUẬN văn THẠC sĩ) xây dựng các ca kiểm thử an toàn thông tin cho ứng dụng web (Trang 38)