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

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 54 - 70)

Chức năng Sửa 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 Sửa nhƣ trong bảng 2.7.

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

Mã ca kiểm thử

Mục đích

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

CHỨC NĂNG: Sửa Date time F5_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 đú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)

Combobox/ Data picker/ Popup

F5_R1_3

SQL Injection (Kiểm tra khi Update)

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. Sửa

Kết quả mong muốn: - Hệ thống không cho phép Update

- Hoặc cho phép Update đú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 Update 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: Update 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)

F5_R2_4 XSS - Cross site scripting (Kiểm tra hiển thị các giá trị với

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>

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: chỉ hiển thị

46 F5_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 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

F5_R2_6

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 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 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

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

F5_R1_7

SQL Injection (Kiểm tra khi Update)

Trong phần Sửa dữ liệu:

1. 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. Sửa

Kết quả mong muốn: - Hệ thống không cho phép Update

- Hoặc cho phép Update đú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 Update 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: Update 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) - Chú ý: Với các textbox bị đặt thuộc tính readonly thì có thể dùng firebug để bỏ thuộc tính này đi

48

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

F5_R1_8

SQL Injection (Kiểm tra khi Update)

Trong phần Sửa dữ liệu:

1. 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. Sửa

Kết quả mong muốn: - Hệ thống không cho phép Update

- Hoặc cho phép Update đú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 Update 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: Update 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)

F5_R2_9

XSS (Kiểm tra lỗi khi nhập Script HTML)

Trong phần Sửa dữ liệu:

1. Nhập vào textbox đoạn script: <b>1</b>

2. Nhập tiêu chí khác hợp lệ 3. Sửa

4. Kiểm tra dữ liệu hiển thị

Kết quả mong muốn: - Hệ thống không cho phép Update

- Hoặc cho phép Update đúng chuỗi dữ liệu nhập vào và hiển thị ra cũng đúng chuỗi đã nhập (không thực thi script)

- Phạm vi kiểm thử: Mỗi trƣờng tƣơng ứng 1 case (chỉ cần test với các trƣờng có DL đƣợc hiển thị trên hệ thống)

- Biểu hiện lỗi:

F5_R2_10

XSS (Kiểm tra lỗi khi nhập Script HTML đƣợc mã hóa hexa dƣới dạng URL)

Trong phần Sửa dữ liệu:

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. Sửa

4. Kiểm tra dữ liệu hiển thị

Kết quả mong muốn:

- Hệ thống không cho phép inser - Hoặc cho phép Update đúng chuỗi dữ liệu nhập vào và hiển thị ra cũng đúng chuỗi đã nhập (không thực thi script)

- Phạm vi kiểm thử: Mỗi trƣờng tƣơng ứng 1 case (chỉ cần test với các trƣờng có DL đƣợc hiển thị trên hệ thống)

- Biểu hiện lỗi:

+ Giá trị hiển thị là 1 (có thể đƣợc in đậm)

+ Hoặc bị mã hóa khi view lên

F5_R2_11

XSS (Kiểm tra lỗi khi nhập Script HTML đƣợc mã hóa hexa dƣới dạng HTML)

Trong phần Sửa dữ liệu:

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. Sửa

4. Kiểm tra dữ liệu hiển thị

Kết quả mong muốn: - Hệ thống không cho phép Update

- Hoặc cho phép Update đúng chuỗi dữ liệu nhập vào và hiển thị ra cũng đúng chuỗi đã nhập (không thực thi script)

- Phạm vi kiểm thử: Mỗi trƣờng tƣơng ứng 1 case (chỉ cần test với các trƣờng có DL đƣợc hiển thị trên hệ thống)

- Biểu hiện lỗi:

50 F5_R2_12

XSS (Kiểm tra lỗi load dữ liệu là Script HTML)

1. Nhập vào textbox đoạn script: '" 2. Nhập tiêu chí khác hợp lệ 3. Lƣu dữ liệu

3. Click Sửa bản ghi vừa lƣu

4. Kiểm tra việc load dữ liệu lên control để phục vụ việc sửa

Kết quả mong muốn: - Hệ thống load dữ liệu lên textbox đúng nhƣ dữ nhập vào - Phạm vi kiểm thử: Mỗi trƣờng tƣơng ứng 1 case (chỉ cần test với các trƣờng có DL đƣợc hiển thị trên hệ thống)

- Biểu hiện lỗi: Giá trị hiển thị dấu ' hoặc rỗng

- Giải thích lỗi:

+ Textbox là các thẻ <Input value = '…'/> hoặc <Input value = "…"/>

+ Giá trị nhập vào dấu 3 chấm là '" => với mục đích ngắt giá trị value => dẫn dến việc hiển thị trong textbox không đúng giá trị nhập vào + Phần thừa ra sau value: hệ thống tự coi là tham số của thẻ input

F5_R2_13

XSS (Kiểm tra lỗi khi load dữ liệu là Script HTML đƣợc mã hóa hexa dƣới dạng URL)

1. Nhập vào đoạn script '" nhƣng đƣợc mã hóa dƣới dạng Hexa dạng URL: '%22 2. Nhập tiêu chí khác hợp lệ

3. Lƣu dữ liệu

3. Click Sửa bản ghi vừa lƣu

4. Kiểm tra việc load dữ liệu lên control để phục vụ việc sửa

Kết quả mong muốn: - Hệ thống load dữ liệu lên textbox đúng nhƣ dữ nhập vào - Phạm vi kiểm thử: Mỗi trƣờng tƣơng ứng 1 case (chỉ cần test với các trƣờng có DL đƣợc hiển thị trên hệ thống)

- Biểu hiện lỗi: Giá trị hiển thị dấu ' hoặc rỗng

F5_R2_14

XSS (Kiểm tra lỗi khi load dữ liệu là Script HTML đƣợc mã hóa hexa dƣới dạng HTML)

1. Nhập vào đoạn script '" nhƣng đƣợc mã hóa dƣới dạng Hexa dạng HTML: '&quot; 2. Nhập tiêu chí khác hợp lệ

3. Lƣu dữ liệu

3. Click Sửa bản ghi vừa lƣu

4. Kiểm tra việc load dữ liệu lên control để phục vụ việc sửa

Kết quả mong muốn: - Hệ thống load dữ liệu lên textbox đúng nhƣ dữ nhập vào - Phạm vi kiểm thử: Mỗi trƣờng tƣơng ứng 1 case (chỉ cần test với các trƣờng có DL đƣợc hiển thị trên hệ thống)

- Biểu hiện lỗi: Giá trị hiển thị dấu ' hoặc rỗng

52

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

F5_R1_15

SQL Injection (Kiểm tra khi Update)

1. Trong phần Sửa 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. Sửa

Kết quả mong muốn: - Hệ thống không cho phép Update

- Hoặc cho phép Update đú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 Update 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: Update 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)

F5_R2_16

XSS (Kiểm tra lỗi load dữ liệu là Script HTML)

1. Nhập vào textbox đoạn: </textarea><textarea> 2. Nhập tiêu chí khác hợp lệ 3. Lƣu dữ liệu

3. Click Sửa bản ghi vừa lƣu

4. Kiểm tra việc load dữ liệu lên control để phục vụ việc sửa

Kết quả mong muốn: - Hệ thống load dữ liệu lên textbox đúng nhƣ dữ nhập vào - Phạm vi kiểm thử: Mỗi trƣờng tƣơng ứng 1 case (chỉ cần test với các trƣờng có DL đƣợc hiển thị trên hệ thống)

- Biểu hiện lỗi: Hệ thống hiển thị thành 2 TextArea (thực chất là chỉ có 1 TextArea, nhƣng do xâu truyền vào ngắt thành 2 TextArea) - Giải thích lỗi: + Do TextArea mặc định coi nội dung bên trong thẻ </textarea>...<textarea> là text => nên thƣờng không bị lỗi thực thi các thẻ HTML => nên chỉ test với xâu này thì mới có thể xuất hiện lỗi

54 F5_R2_17

XSS (Kiểm tra lỗi khi load dữ liệu là Script HTML đƣợc mã hóa hexa dƣới dạng URL)

1. Nhập vào đoạn script

</textarea><textarea> nhƣng đƣợc mã hóa dƣới dạng Hexa dạng URL:

%3c%2ftextarea%3e%3ctextarea%3e 2. Nhập tiêu chí khác hợp lệ

3. Lƣu dữ liệu

3. Click Sửa bản ghi vừa lƣu

4. Kiểm tra việc load dữ liệu lên control để phục vụ việc sửa

Kết quả mong muốn: - Hệ thống load dữ liệu lên textbox đúng nhƣ dữ nhập vào - Phạm vi kiểm thử: Mỗi trƣờng tƣơng ứng 1 case (chỉ cần test với các trƣờng có DL đƣợc hiển thị trên hệ thống)

- Biểu hiện lỗi: Hệ thống hiển thị thành 2 TextArea (thực chất là chỉ có 1 TextArea, nhƣng do xâu truyền vào ngắt thành 2 TextArea) F5_R2_18 XSS (Kiểm tra lỗi khi load dữ liệu là Script HTML đƣợc mã hóa hexa dƣới dạng HTML)

1. Nhập vào đoạn script

</textarea><textarea> nhƣng đƣợc mã hóa dƣới dạng Hexa dạng HTML:

&lt;/textarea&gt;&lt;textarea&gt; 2. Nhập tiêu chí khác hợp lệ 3. Lƣu dữ liệu

3. Click Sửa bản ghi vừa lƣu

4. Kiểm tra việc load dữ liệu lên control để phục vụ việc sửa

Kết quả mong muốn: - Hệ thống load dữ liệu lên textbox đúng nhƣ dữ nhập vào - Phạm vi kiểm thử: Mỗi trƣờng tƣơng ứng 1 case (chỉ cần test với các trƣờng có DL đƣợc hiển thị trên hệ thống)

- Biểu hiện lỗi: Hệ thống hiển thị thành 2 TextArea (thực chất là chỉ có 1 TextArea, nhƣng do xâu truyền vào ngắt thành 2 TextArea)

Hành động (action) F5_R4_19 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 dl => Sửa Value/ID = Value/ID tồn tại trong DB, nhƣng là miền dl 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 = 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óạ..)

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

56 F5_R4_20 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)

F5_R4_21 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ó ràng buộc quyền thực hiệ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: sửa ID dữ liệu của thao tác = ID lấy đƣợc ở bƣớc 2

4. Thực hiện action

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

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 54 - 70)