Là người mới bắt đầu sử dụng cookie, CSRF và Django (sử dụng 1.4), từ những gì tôi có thể thực hiện được, làm thế nào để sửa lỗi ...Đây có phải là cách bảo vệ CSRF của Django hoạt động không?
Sau đây áp dụng nơi django.middleware. csrf.CsrfViewMiddleware được bao gồm trong bộ MIDDLEWARE_CLASSES.
đâu một hình thức POST bao gồm thẻ csrf_token
, và quan điểm liên quan đi RequestContext
để mẫu, yêu cầu trang có nghĩa là Django bao gồm một trường mẫu ẩn chứa một chuỗi chữ và số. Django cũng trả lại cho trình duyệt một cookie có tên được đặt là csrftoken
và giá trị được đặt thành cùng một chuỗi chữ và số.
Khi nhận được gửi biểu mẫu, Django kiểm tra giá trị chuỗi chữ và số từ trường biểu mẫu ẩn khớp với cookie csrftoken nhận được từ trình duyệt. Nếu họ không phù hợp với một phản ứng 403 được ban hành.
Tấn công CSRF có thể có dạng trang web độc hại bao gồm iframe. Khung nội tuyến bao gồm biểu mẫu POST và một số JavaScript. Các điểm thuộc tính của action
của biểu mẫu đến trang web Django của tôi. Biểu mẫu được thiết kế để làm điều gì đó khó chịu tại trang web của tôi và JS gửi biểu mẫu khi khung nội tuyến được tải.
Trình duyệt sẽ bao gồm cookie csrftoken
trong tiêu đề gửi biểu mẫu. Tuy nhiên, biểu mẫu sẽ không bao gồm trường ẩn với chuỗi ký tự chữ và số phù hợp, do đó, 403 được trả về và cuộc tấn công không thành công. Nếu iframe JS cố gắng truy cập cookie, để tạo trường biểu mẫu ẩn đúng, trình duyệt sẽ ngăn không cho nó làm như vậy.
Điều này có đúng không?
Tôi không thấy điều gì sai. Có lẽ những người khác sẽ, nhưng nói chung, bạn đã có nó. – Zashas