CSRF với phiên cookie: SameSite là một lớp hỗ trợ, không thay thế xác minh yêu cầu ghi dữ liệu

27 lượt xem · 3 trả lời

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.
0 Facebook
2. 11:08 14/10/2026
Trả lời Quản Trị Viên 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…
Bài viết rất đúng trọng tâm, cảm ơn admin đã nhắc nhở rõ ràng. Thực tế nhiều team vẫn nghĩ SameSite=Lax hay Strict là "xong việc" rồi bỏ qua token, rồi mới phát hiện lỗi khi có subdomain chia sẻ cookie, hoặc luồng redirect phức tạp khiến browser gửi cookie theo cách không mong muốn. Điểm 4 nói "không để cookie trở thành lý do bỏ qua CSRF token" là quan trọng nhất: cookie chỉ là credential, không phải bằng chứng ý định của người dùng. Về điểm 5, mình thấy việc yêu cầu xác thực lại (re-auth) cho hành động rủi ro cao thường bị lạm dụng hoặc triển khai lỏng lẻo (ví dụ chỉ hỏi mật khẩu mà không có TOTP/WebAuthn). Theo kinh nghiệm các bạn, có cách nào cân bằng giữa trải nghiệm người dùng và an ninh cho các luồng như "đổi email" hoặc "cấp quyền admin" mà không khiến quy trình trở nên cồng kềnh không?
0
3. 10:41 16/10/2026
Trả lời Quản Trị Viên 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…
Cảm ơn bác admin nhắc nhở rất đúng trọng tâm. Mình từng gặp case dev team tin SameSite=Lax là "xong việc" nên bỏ qua CSRF token ở các endpoint đổi email, kết quả bị bypass qua subdomain takeover hoặc trình duyệt cũ không hỗ trợ strict. Thực tế SameSite chỉ giảm diện tích tấn công, không loại bỏ root cause là server không xác thực được nguồn gốc request. Điểm 4 về HttpOnly + Secure + SameSite là baseline, nhưng điểm 1 (token) và điểm 5 (re-auth cho hành động rủi ro) mới là "chốt chặn". Mình hay khuyên team: treat cookie như credential, treat token như proof-of-intent. Hai thứ phục vụ mục đích khác nhau. Hỏi thêm chút: với kiến trúc SPA dùng access token trong memory + refresh token trong HttpOnly cookie, bác thấy nên implement CSRF token cho refresh endpoint không, hay chỉ kiểm tra Origin/Referer là đủ an toàn trong ngữ cảnh hiện đại?
0
4. 15:11 26/10/2026
Trả lời Nguyễn Khánh Cảm ơn bác admin nhắc nhở rất đúng trọng tâm. Mình từng gặp case dev team tin SameSite=Lax là "xong việc" nên bỏ qua CSR…
Mình nghiêng về phương án có CSRF token cho refresh endpoint, còn Origin/Referer chỉ nên là lớp bổ sung. Refresh endpoint là nơi cấp credential mới và thường xoay refresh token, nên nếu bị CSRF thì ít nhất gây rotate/logout hàng loạt, tệ hơn là lộ access token nếu CORS cấu hình sai. Origin/Referer hữu ích nhưng không phải lúc nào cũng có hoặc đáng tin tuyệt đối, nhất là với client
0
Vui lòng đăng nhập để tham gia trả lời chủ đề này.
Điều hướng nhanh

Bạn muốn khám phá điều gì?

Tìm chủ đề, bài viết hoặc đi thẳng đến một khu vực của cộng đồng.

Esc để đóng Ctrl K để mở lại