Bảo mật CSRF Độc lập với Front-End

Sep 29 2020

Tôi đang cố gắng tìm hiểu xem liệu tôi có hoàn toàn hiểu đúng về bảo mật CSRF hay không. Dựa trên:

https://cheatsheetseries.owasp.org/cheatsheets/Cross-Site_Request_Forgery_Prevention_Cheat_Sheet.html

Trong tất cả các trường hợp, có vẻ như giao diện người dùng của bạn phải có mã thông báo CSRF ở đâu đó để khi một yêu cầu được gửi đến phần phụ trợ, nó có thể so sánh cả mã thông báo csrf trong cookie / phiên với yêu cầu. Theo cách đó, khi kẻ tấn công cố gắng tạo yêu cầu thay mặt cho người dùng đã đăng nhập, vì họ không có mã thông báo trong yêu cầu, nó sẽ không được xác thực.

Điều này có nghĩa là để triển khai CSRF, bạn cần phải định cấu hình cả phía trước và phần phụ trợ.

Bây giờ, hãy nói rằng tôi muốn tất cả bảo mật CSRF được thực hiện trên phần phụ trợ, điều này có thể thực hiện được, không phải thay đổi giao diện người dùng?

Ngoài ra, nếu ứng dụng giao diện người dùng của tôi được tách khỏi phụ trợ, tôi có cần phải lo lắng về các cuộc tấn công CSRF không?

Trả lời

multithr3at3d Sep 29 2020 at 05:33

Có, một phương pháp đảm bảo bảo vệ CSRF là kiểm tra tiêu đề Nguồn gốc và Liên kết giới thiệu để xem liệu chúng có khớp với nguồn gốc dự kiến ​​hay không, vì các tiêu đề này không thể bị ghi đè bởi bất kỳ mã giao diện người nào. Tuy nhiên, tiêu đề gốc chỉ được gửi theo yêu cầu POST hoặc CORS và việc triển khai trình duyệt của những tiêu đề này trước đây không nhất quán; Ví dụ: có thể cho phép JavaScript giả mạo một hoặc nhiều tiêu đề (các trình duyệt hiện đại sẽ hoạt động chính xác, mặc dù tôi không thể nói về thông số kỹ thuật hoặc triển khai trong tương lai).

Biện pháp bảo vệ này chỉ yêu cầu thực hiện kiểm tra phía máy chủ đối với mọi yêu cầu POST. Điều quan trọng là phải từ chối yêu cầu nếu nguồn gốc đã gửi không khớp hoặc nếu không có yêu cầu nào được gửi.

Các OWASP CSRF Cheat Sheet bao gồm một số lý do tại sao bạn có thể không muốn sử dụng phương pháp này độc quyền. Tuy nhiên, nếu bạn không gặp phải những hạn chế nào, cá nhân tôi cảm thấy rằng phương pháp này có thể sử dụng thay cho một phương pháp phức tạp hơn.

Cũng tùy thuộc vào sự hỗ trợ của trình duyệt là tùy chọn cookie "SameSite: nghiêm ngặt". Điều này ngăn không cho cookie được gửi từ một trang web của bên thứ ba, đồng thời cũng làm giảm CSRF.