Chức năng Import thƣờng gặp các lỗi XSS, SQL Injection, CSRF, lỗi liên quan đến thao tác với file, lỗi đệ lộ dữ liệu của hệ thống và lỗi liên quan đến việc xác thực phân 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, khai thác thông tin hệ thống 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 Import nhƣ trong bảng 2.12.
Bảng 2.12. Các ca kiểm thử với màn hình có chức năng Import
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: Import
Check loại file
F10_R7_
1 Check loại file khi import 1. Vào chức năng import 2. Import file .exe lên hệ thống
- Hệ thống phải giới hạn và kiểm tra các định dạng file cho phép import.
- Không cho phép Import file .exe vào hệ thống
- Phạm vi kiểm thử: Mỗi chức năng 1 case
- Biểu hiện lỗi: Cho phép import file .exe lên hệ thống.
Ví dụ: Hệ thống chỉ cho phép importfile có định dạng .doc, xls, xlsx,…nhƣng khi test lại import cả file dạng .exe
- Giải thích lỗi: Khi import file, có thể hệ thống đẩy file lên
server, lƣu tạm trên server, sau đó mới đọc nội dung file
F10_R7_ 2
Check loại file khi import
1. Vào chức năng import
2. Import file .exe lên hệ thống (file exe này đã đƣợc đổi đuôi thành file hợp lệ) - Hệ thống phải giới hạn và kiểm tra các định dạng file cho phép import. - Không cho phép Import file .exe vào hệ thống (dù file đã đƣợc đổi đuôi thành file hợp lệ)
- Phạm vi kiểm thử: Mỗi chức năng 1 case
- Biểu hiện lỗi: Cho phép import file .exe lên hệ thống.
Ví dụ: Hệ thống chỉ cho phép importfile có định dạng .doc, xls, xlsx,…nhƣng khi test lại import cả file dạng .exe
- Giải thích lỗi: Khi import file, có thể hệ thống đẩy file lên
server, lƣu tạm trên server, sau đó mới đọc nội dung file
Trƣờng lƣu trong DB là trƣờng số
F10_R1_ 3
SQL Injection (Kiểm tra khi Insert hoặc update)
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. Import
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,… );
86
Trƣờng lƣu trong DB là xâu
F10_R1_ 4
SQL Injection (Kiểm tra khi Insert hoặc update)
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/ Sửa
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)
F10_R2_ 5
XSS (Kiểm tra lỗi khi nhập Script HTML)
1. Nhập vào textbox đoạn script:
<b>1</b>
2. Nhập tiêu chí khác hợp lệ 3. Thêm mới/ Sửa
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 (không thực thi script)
- Phạm vi kiểm thử: Mỗi trƣờng tƣơng ứng 1 case
- Biểu hiện lỗi:
+ Giá trị hiển thị là 1 (có thể đƣợc in đậm)
F10_R2_ 6
XSS (Kiểm tra lỗi khi nhập Script HTML đƣợc mã hóa hexa dƣới 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. Thêm mới/ Sửa
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 (không thực thi script)
- Phạm vi kiểm thử: Mỗi trƣờng tƣơng ứng 1 case
- 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
F10_R2_ 7
XSS (Kiểm tra lỗi khi nhập Script HTML đƣợc mã hóa hexa dƣới 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: <b>1</b> 2. Nhập tiêu chí khác hợp lệ
3. Thêm mới/ Sửa
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:
+ Giá trị hiển thị là 1 (có thể đƣợc in đậm)
88
Hành động (action)
F10_R4_ 8
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 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
+ 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
F10_R4_ 9
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)
90 F10_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ó 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 hiện action (việc check validate các ràng buộc phải thực hiện trên server)
- 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 hết hiệu lực, vv...).
+ Và việc validate các ràng buộc này chỉ thực hiện phía client, không check trên server - Biểu hiện lỗi: Hệ thống cho phép thực hiện action với DL đã có ràng buộc không cho phép thực hiện (VD: Dữ liệu đã bị khóa, hoặc đã hết hiệu lực…)
F10_R3_ 11 CSRF (Kiểm tra lỗi với các chức năng - action tác động đến DB) - Cách 1: 1. Mở firebug
2. Vào màn hình nhập đầy đủ thông tin (chƣa nhấn action)
3. Gõ lệnh java script:
tctResetToken("<giá trị token mới>") để reset lại toàn bộ token trƣớc khi nhấn action
4. Nhấn action
5. Kiểm tra hồi đáp từ ứng dụng
- Cách 2:
1. Ứng dụng: Vào màn hình nhập đầy đủ thông tin (chƣa nhấn action) 2. Tamper data: click start 3. Ứng dụng: Nhấn action
3. Tamper data: Click Tamper => Sửa trƣờng value của tất cả các Token trong Post data = 1 giá trị bất kỳ => submit. Tuy nhiên, với 1 số trƣờng hợp thì server lại check giá trị token đc gửi kèm trong link, chứ không phải trong post data, khi đó cách test này không chính xác
4. Ứng dụng: Kiểm tra hồi đáp từ ứng
Chƣơng trình thông báo Token không hợp lệ.
- Phạm vi kiểm thử: Mỗi action tƣơng ứng 1 case (thƣờng chỉ check với các chức năng làm thay đổi DL trong DB (Thêm, sửa, Xóa, action quan trọng khác ...) + các action quan trọng
- Biểu hiện lỗi:
+ Không tìm thấy token (không gửi token lên server)
+ Hoặc vẫn thực hiện thao tác thành công
92 F10_R12 _12 Để 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ệ
F11. Ca kiểm thử cho chức năng Trang có chuyển hướng
Chức năng Trang có chuyển hƣớng thƣờng gặp chuyến hƣớng và chuyển tiếp thiếu thẩm trạ Phƣơng pháp tiếp cận hệ thống để kiểm tra lỗi này là dựa vào việc sửa tham số trên URL với sự hỗ trợ của các công cụ nhƣ firebug. Chúng tôi thiết kế trƣờng hợp kiểm tra cho chức năng này nhƣ trong bảng 2.13.
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
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: Các trang có chuyển hƣớng
Chuyển hƣớng và chuyển tiếp
F11_R11_ 1 Chuyển hƣớng và chuyển tiếp thiếu thẩm tra
1. Copy link của trang có chuyển tiếp. VD:
http://192.168.174.14:5676/passportv3/login?appCode=ViettelSVN& service=http%3A%2F%2F192.168.174.14%3A8090%2Fsvnadmin
Trong đó, URL đƣợc chuyển tiếp đến là:
http%3A%2F%2F192.168.174.14%3A8090%2Fsvnadmin
1. Thay URL đƣợc chuyển tiếp = URL mà bạn mong muốn đƣợc chuyển tiếp đến. VD sửa URL thành:
http://192.168.174.14:5676/passportv3/login?appCode=ViettelSVN &service=http://vtv.vn
2. Paste link vừa sửa trên trình duyệt => Dùng user/pass của hệ thống
Hệ thống báo không kết nối đến link đó đƣợc hoặc là báo link đó không đƣợc trust - Phạm vi kiểm thử: + Mỗi trang có chuyển hƣớng tƣơng ứng 1 case + Các trang login của mình thƣờng qua cas nên phải test case này - Biểu hiện lỗi: Hệ thống trả về URL
94
F12. Ca kiểm thử liên quan đến dữ liệu nhạy cảm
Các dữ liệu nhạy cảm thì thƣờng đƣợc các hacker tập chung khai thác. Phƣơng pháp tiếp cận hệ thống để kiểm tra các lỗi liên quan đến dữ liệu nhạy cảm thƣờng dùng các công cụ hỗ trợ nhƣ firebug, tamper data hoặc truy xuất trực tiếp DB. Chúng tôi thiết kế các trƣờng hợp kiểm tra cho trƣờng hợp này nhƣ trong bảng 2.14.
Bảng 2.14. Các ca kiểm thử với chức năng có dữ liệu nhạy cảm
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: Mã hóa dữ liệu nhạy cảm
Dữ liệu trong DB F12_R8_1 Mã hóa dữ liệu nhạy cảm trong DB
1. Tạo 1 bộ dữ liệu nhạy cảm (VD: account, pass) 2. Check dữ liệu lƣu trong DB (VD: dữ liệu pass)
Check trong DB: hệ thống lƣu dữ liệu đã đƣợc mã hóa
- Phạm vi kiểm thử: Mỗi loại dữ liệu 1 case
F12_R8_2
1. Tạo nhiều bộ dữ liệu nhạy cảm giống nhau (VD: 2 account có cùng pass)
2. Check dữ liệu nhạy cảm lƣu trong DB (VD: mật khẩu)
Check trong DB: chuỗi mã hoá khác nhau
- Phạm vi kiểm thử: Mỗi loại dữ liệu 1 case
Dữ liệu trong cookie F12_R8_3 Mã hóa dữ liệu nhạy cảm trong cookie
1. Đăng nhập vào hệ thống với user/ pass
<Check vào checkbox "Nhớ mật khẩu" nếu có> 2. Kiểm tra thông tin nhạy cảm (VD: Pass) có bị hiển thị dạng rõ không?
+ Cách 1: Vào Firebug gõ lệnh: document.cookie để xem thông tin trong Cookie (chỉ dùng đƣợc cách này khi chƣa fix HttpOnly)
+ Cách 2: Vào firebug xem cookie (net/ all/ cookie)
Dữ liệu nhạy cảm không đƣợc hiển thị hoặc phải đƣợc mã hóa (VD: Pass)
- Phạm vi kiểm thử: Check với chức năng đăng nhập <Thƣờng thì các hệ thống đăng nhập qua CAS, passport sẽ không lƣu user/ pass ở cookie>
Dữ liệu trên link
F12_R8_4 Mã hóa dữ liệu nhạy cảm trên link
1. Thực hiện thao tác có liên quan đến DL nhạy cảm
2. Copy link with parameter với thao tác vừa thực hiện
3. Kiểm tra link vừa copy xem có hiển thị DL nhạy cảm dạng rõ không?
DL nhạy cảm phải đƣợc mã hóa trên link
- Phạm vi kiểm thử: Mỗi loại dữ liệu 1 case
96
F13. Ca kiểm thử cho chức năng liên quan đến mật khẩu
Chức năng liên quan đến mật khẩu thì thƣờng đƣợc kiểm tra về độ mạnh của mật khẩu và kiểm tra việc sử dụng captcha để tránh việc hệ thống bị tấn công từ chối dịch vụ. Chúng tôi thiết kế các trƣờng hợp kiểm tra cho chức năng liên quan đến mật khẩu nhƣ trong bảng 2.15.
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
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: Các chức năng liên quan đến mật khẩu
Đăng ký
F13_R14_1 Mật khẩu mạnh (Độ phức tạp và độ dài)
1. Kiểm tra việc đặt mật khẩu của ngƣời dùng có đảm bảo là mật khẩu mạnh chƣả
Việc đặt mật khẩu của ngƣời dùng cần đảm bảo là mật khẩu mạnh. Tức là mật khẩu đảm bảo các yếu tố sau:
- Số ký tự >= 8 ký tữ
- Mật khẩu phải bao gồm: Chữ số, chữ cái và ký tự đặc biệt
- Phạm vi kiểm thử: Cần test với các màn hình liên quan đến việc thiết lập