26/08/2026
🔐 [Day 478/100] Kiểm thử bảo mật #44 - Kiểm tra OTP khác tài khoản
Một hệ thống yêu cầu OTP để xác nhận một thao tác
• Ngoài kiểm tra nhập OTP → thành công
Hãy thử kiểm tra một tình huống khác
• Tài khoản A nhận được một mã OTP
• Sau đó tài khoản B cũng có một bước yêu cầu OTP
Câu hỏi là:
❓Mã OTP được cấp cho A có thể được dùng để xác nhận cho B hay không?
---
🎯 Cần kiểm thử gì?
Kiểm tra OTP được cấp cho tài khoản A có bị chấp nhận khi sử dụng để xác nhận một thao tác của tài khoản B hay không
Có thể thực hiện với một chức năng như:
• Xác nhận thay đổi email
• Xác nhận số điện thoại
• Xác nhận một giao dịch
• Xác thực tài khoản
---
🧪 Thực hiện như thế nào?
Chuẩn bị:
• Tài khoản A
• Tài khoản B
✅Bước 1
Đăng nhập tài khoản A và thực hiện thao tác cần OTP
Ví dụ:
• Thay đổi số điện thoại
✅Bước 2
Nhận OTP được gửi cho A
Ghi lại mã OTP này
✅Bước 3
Chuyển sang tài khoản B
Thực hiện một thao tác khác cũng yêu cầu OTP
✅Bước 4
Khi hệ thống yêu cầu mã, nhập OTP đã nhận của tài khoản A
✅Bước 5
Quan sát kết quả
---
⚠️ Kết quả không mong muốn
Nếu tài khoản B nhập OTP của A nhưng hệ thống vẫn cho phép:
• Xác nhận thành công
hoặc:
• Tiếp tục thực hiện hành động của B
→ Cần ghi nhận vấn đề nếu OTP được thiết kế để gắn với đúng tài khoản và thao tác tạo ra nó
Đặc biệt chú ý nếu việc này dẫn đến:
• Thay đổi thông tin tài khoản
• Xác nhận giao dịch
• Hoàn tất một hành động quan trọng
---
🔎 Không chỉ kiểm tra “đúng người”
Có một điểm nữa cần quan sát:
OTP của A được tạo ra cho:
• Thao tác X
nhưng lại được sử dụng để xác nhận:
• Thao tác Y
Ví dụ:
• OTP được gửi khi đổi số điện thoại
Sau đó dùng chính mã đó để xác nhận một thao tác khác
Nếu hệ thống yêu cầu OTP phải gắn với đúng hành động, mã này không nên được chấp nhận cho thao tác khác
---
# # 🚨 Khi log bug
Nên ghi rõ 4 thông tin:
• OTP được tạo từ tài khoản nào
• OTP được tạo cho thao tác nào
• OTP được sử dụng ở tài khoản hoặc thao tác nào
• Hệ thống đã cho phép thực hiện hành động gì
Ví dụ:
• OTP được cấp cho tài khoản A khi thực hiện thay đổi số điện thoại. Sử dụng OTP này trên tài khoản B vẫn xác nhận thành công thao tác thay đổi số điện thoại của B
Cách mô tả này giúp phân biệt rõ vấn đề với trường hợp:
• Nhập sai OTP nhưng vẫn được chấp nhận
---
✅ Kết quả mong muốn
OTP phải được kiểm tra đúng với "người dùng và thao tác đã yêu cầu mã"
• OTP của tài khoản A không được dùng để xác nhận cho tài khoản B nếu thiết kế yêu cầu mã gắn với từng tài khoản
Tương tự, OTP được tạo cho một hành động không nên tự động có hiệu lực cho một hành động khác nếu hệ thống yêu cầu xác nhận riêng
---
🔐 Một OTP đúng chưa đủ.
• Hệ thống còn phải xác định mã đó đúng với người nào và đang xác nhận cho hành động nào