Trong kiểm thử bảo mật, Authentication và Authorization là hai khái niệm quan trọng và có vai trò khác nhau. Dưới đây là sự phân biệt giữa hai khái niệm này:
Authentication (Xác thực):
- Authentication (hay còn được gọi là xác thực) là quá trình xác định và xác minh danh tính của một người dùng, hệ thống hoặc thiết bị.
- Mục tiêu của Authentication là xác nhận rằng người dùng hoặc thiết bị có quyền truy cập và tham gia vào hệ thống hay ứng dụng cụ thể.
- Phương thức xác thực thông thường bao gồm việc sử dụng tên người dùng và mật khẩu, mã thông báo xác thực (authentication token), chứng chỉ số (certificates), vân tay, hoặc quét khuôn mặt và dấu vân tay.
Authorization (Ủy quyền):
- Authorization (hay còn được gọi là ủy quyền) là quá trình quyết định và kiểm soát quyền truy cập vào các tài nguyên, chức năng hoặc dịch vụ của hệ thống.
- Mục tiêu của Authorization là xác định xem người dùng hoặc thiết bị đã được xác thực có quyền truy cập vào các tài nguyên cụ thể hay không.
- Quá trình ủy quyền thường được thực hiện dựa trên vai trò (roles) hoặc quyền hạn (permissions) được xác định trước, và được kiểm soát thông qua các chính sách và quy tắc ủy quyền.
Tóm lại, Authentication liên quan đến xác định và xác minh danh tính, trong khi Authorization liên quan đến quyết định và kiểm soát quyền truy cập vào các tài nguyên trong hệ thống. Hai khái niệm này thường được sử dụng cùng nhau trong kiểm thử bảo mật để đảm bảo rằng người dùng chỉ có quyền truy cập vào những tài nguyên mà họ được ủy quyền.
Cách kiểm thử bảo mật cho authentication và authorization
Kiểm thử bảo mật cho Authentication và Authorization trong một ứng dụng thường bao gồm các bước và phương pháp sau:
Kiểm thử Authentication:
- Kiểm tra xác thực đúng dựa trên tên người dùng và mật khẩu hoặc các phương thức xác thực khác.
- Kiểm tra xử lý sai lệch đối với các trường hợp xác thực không hợp lệ, bao gồm việc thử đăng nhập bằng thông tin xác thực sai hoặc không hợp lệ.
- Kiểm tra sự bảo vệ của thông tin xác thực, bao gồm việc kiểm tra tính bảo mật của mật khẩu và mã thông báo xác thực.
- Kiểm tra các kịch bản tấn công phổ biến như tấn công theo từ điển (dictionary attack), tấn công Brute-force, hoặc tấn công từ chối dịch vụ (Denial of Service).
Kiểm thử Authorization:
- Kiểm tra xác định và kiểm soát quyền truy cập vào các tài nguyên, chức năng hoặc dịch vụ.
- Kiểm tra xem các chính sách và quy tắc ủy quyền được thực thi đúng cách.
- Kiểm tra xử lý sai lệch đối với các trường hợp quyền truy cập không hợp lệ hoặc cố gắng truy cập vào các tài nguyên không được ủy quyền.
- Kiểm tra xác định và kiểm soát quyền truy cập dựa trên các vai trò và quyền hạn đã được xác định trước.
- Kiểm tra các kịch bản tấn công phổ biến như tấn công vượt qua giới hạn (privilege escalation), tấn công tràn truy cập (access control bypass), hoặc tấn công tài nguyên (resource-based attacks).
Ngoài ra, còn một số phương pháp và công cụ được sử dụng trong kiểm thử bảo mật, bao gồm:
- Sử dụng công cụ kiểm thử tự động để tìm lỗ hổng bảo mật trong quá trình xác thực và ủy quyền.
- Kiểm tra các bảo vệ bảo mật như mã hóa thông tin xác thực, sử dụng mã thông báo (token) an toàn, hoặc sử dụng chứng chỉ số.
- Thực hiện kiểm thử kiến trúc và thiết kế của hệ thống để đảm bảo tính bảo mật của quyền truy cập và phân quyền.
- Sử dụng các kịch bản tấn công phổ biến như kiểm tra các điểm yếu phổ biến, tấn công theo từ điển, tấn công SQL Injection, tấn công Cross-Site Scripting (XSS), và tấn công Cross-Site Request Forgery (CSRF).
Lưu ý rằng việc kiểm thử bảo mật là một quá trình liên tục và đòi hỏi sự chuyên sâu và hiểu biết về các kỹ thuật tấn công và biện pháp bảo mật. Việc tạo ra một chiến lược kiểm thử bảo mật toàn diện và sử dụng các chuyên gia và công cụ chuyên dụng là quan trọng để đảm bảo tính bảo mật của ứng dụng.
Ở các bài viết tiếp theo, mình sẽ chia sẻ về encryption, data integrity và non-repudiation trong kiểm thử bảo mật, các bạn đón xem nhé.