Rủi ro không phải là lỗ hổng
Hai từ này bị dùng lẫn nhau mỗi ngày, và sự lẫn lộn đó là lý do các buổi họp bảo mật đi vào ngõ cụt.
Lỗ hổng là một tính chất của code: câu truy vấn này ghép chuỗi, endpoint kia không kiểm chủ sở hữu. Nó đúng hoặc sai, và nó không đổi khi bạn đổi ý.
Rủi ro là một tích số: khả năng bị khai thác × thiệt hại nếu bị khai thác. Cùng một lỗ hổng SQL injection mang rủi ro hoàn toàn khác nhau ở một trang blog nội bộ và ở cổng thanh toán.
Vì sao phân biệt này quan trọng với người viết code: nó là thứ quyết định thứ tự bạn sửa. Một danh sách 200 phát hiện từ scanner không sắp được thứ tự nếu bạn chỉ nhìn lỗ hổng; nó sắp được ngay khi bạn hỏi "cái nào chạm tới dữ liệu người dùng thật".
OWASP Top 10 không phải danh sách lỗ hổng phổ biến nhất — nó là danh sách hạng mục rủi ro, xếp theo dữ liệu thật từ hàng trăm nghìn ứng dụng. Đó là lý do A01 "Broken Access Control" đứng đầu chứ không phải "SQL injection": access control là một lớp lỗi, không phải một lỗi.
Bình luận
Bình luận cần tài khoản đã hoàn thành ít nhất một bài học. Điều kiện đó là thứ giữ cho luồng thảo luận này còn đáng đọc: mỗi ý kiến gắn với một người có thể bị hỏi lại, và reputation tích luỹ theo thời gian.
Bạn vẫn đọc được toàn bộ bình luận dưới đây mà không cần tài khoản. Đăng nhập xong bạn sẽ quay lại đúng chỗ này, không phải đầu trang.
Đang tải bình luận…