1. 14:05 12/08/2026
CẢNH BÁO THỰC TẾ
Ứng dụng dùng session cookie thường bảo vệ được luồng đăng nhập, nhưng các thao tác ghi dữ liệu như đổi email, thêm người dùng, chuyển trạng thái đơn hàng hoặc cấp quyền vẫn có thể bị lạm dụng nếu server không phân biệt được yêu cầu do chính ứng dụng tạo ra với yêu cầu được kích hoạt từ một trang khác. Dựa hoàn toàn vào cookie hoặc chỉ tin vào giao diện là một lỗi thiết kế phổ biến.
SameSite giúp giảm nhiều trường hợp gửi cookie chéo site, nhưng không phải lời hứa tuyệt đối cho mọi browser, luồng điều hướng, subdomain hoặc cấu hình sản phẩm. Cách phòng thủ nên gồm:
1. Gắn CSRF token khó đoán với phiên hoặc yêu cầu, kiểm tra token ở tất cả endpoint làm thay đổi trạng thái.
2. Dùng phương thức HTTP đúng ngữ nghĩa; tuyệt đối không cho GET thực hiện thay đổi dữ liệu.
3. Kiểm tra Origin, và Referer như lớp bổ sung khi phù hợp; xử lý trường hợp header thiếu theo chính sách fail-safe, không theo cảm tính.
4. Cookie phiên có HttpOnly, Secure khi dùng HTTPS và SameSite phù hợp use case; không để cookie trở thành lý do bỏ qua CSRF token.
5. Yêu cầu xác thực lại hoặc bước xác nhận riêng cho thao tác rủi ro cao như đổi mật khẩu, đổi email, thêm MFA, cấp quyền và thanh toán.
Khi triển khai API token-based, đừng tự kết luận không còn CSRF. Hãy xem token được đặt/lấy ở đâu, browser tự gửi credential nào, có dùng cookie cho refresh token hay không và endpoint nào chấp nhận request từ browser. Kiểm thử cần bao gồm các luồng chỉnh sửa dữ liệu, không chỉ form đăng nhập.
Tham khảo: OWASP Top 10 – Broken Access Control và các cheat sheet phòng chống CSRF của OWASP.