Câu hỏi này mang tính tái bảo hiểm cao hơn một câu hỏi trực tiếp về cách viết mã. Là một autodidact tôi không có nhiều khả năng để hỏi các chuyên gia những điều như vậy, vì vậy tôi cố gắng ở đây.Trong trường hợp nào có thể miễn trừ CSRF là nguy hiểm?
Tôi đã đọc các tài liệu trong django-docs (https://docs.djangoproject.com/en/1.3/ref/contrib/csrf/) và một số thông tin trên trang đó: http://cwe.mitre.org/top25/#CWE-352
Theo như tôi đã hiểu, django cung cấp một mã thông báo (một số loại pin-code) để một người dùng. Và để xác minh nó thực sự là anh ta, anh ta phải trả lại nó trong lần tiếp theo anh ta yêu cầu. Và một số người ở Google phát hiện ra rằng điều này thậm chí có thể với các yêu cầu ajax, đó là lý do tại sao chúng tôi cũng có chính sách bảo vệ chúng mới kể từ 1.2.6. Và CSRF là về một người nào đó cho tôi một cái gì đó (mã nguy hiểm, xấu, các tệp tham nhũng hoặc một cái gì đó tương tự) giả vờ là một người khác.
Vì vậy, nếu tôi có một số mã như thế này:
@csrf_exempt
def grab(request):
"""
view to download an item
POST because it stores that a user has downloaded this item
"""
item_id = request.POST.get('item', None)
if not loop: return HttpResponseBadRequest('no item id provided')
item = Item.objects.get(pk=int(item_id))
rằng nên tiết kiệm, vì tôi không cho truy cập vào cơ sở dữ liệu hoặc bất kỳ phần nào của ứng dụng của tôi trước khi cố gắng để chuyển đổi các giá trị nhất định để một số nguyên. Và không có quá nhiều thiệt hại nếu tôi làm một hồ sơ sai của một người nào đó tải một tập tin (trong trường hợp này nó gần như là không có). Giả sử tôi sẽ viết các hóa đơn dựa trên quan điểm này, việc miễn trừ CSRF sẽ thay đổi ý tưởng tồi (Có đúng không?).
Tôi cũng không hiểu tại sao ai đó không thể lấy cắp mã thông báo CSRF từ người dùng và sử dụng nó để vẫn lừa tôi (hoặc người dùng). Vì vậy, tôi có một số câu hỏi về chủ đề này:
1) là các giả định của tôi từ bên phải không?
2) ai đó có thể cho tôi biết, những gì (và có thể là như thế nào) một số người không tốt đẹp có thể sử dụng chế độ xem ở trên để thực hiện các thủ đoạn bẩn thỉu và họ sẽ là gì?
3) là một CSRF là một ví dụ về một cuộc tấn công ở giữa, là nó chỉ liên quan đến nó, hay là nó hoàn toàn khác?
4) Bất kỳ liên kết có giá trị nào để đọc thêm về những nguy hiểm như vậy?
Có thể một số câu hỏi này không được thông báo đầy đủ, nhưng tôi đang cố vượt qua điều đó. Tôi sẽ rất vui nếu có ai đó có thể giúp tôi.
Có một ánh sáng mờ xuất hiện ở cuối đường hầm ... Vì vậy, nếu tôi muốn gửi những điều xấu đến máy chủ, trước tiên tôi phải gửi một số dữ liệu đến một số trình duyệt của người dùng. Trong dữ liệu này tôi ẩn một số hình thức tự động gửi bài gửi đến máy chủ bị tấn công. Tôi cho rằng người dùng đã đăng nhập vào máy chủ đó, bởi vì anh ta có một tài khoản ở đó. Và nếu máy chủ không kiểm tra một số mã thông báo, nó sẽ chỉ phải tin rằng yêu cầu đó là hợp pháp. Ít nhất tôi có một ý tưởng bây giờ nó hoạt động như thế nào, và nơi để vẽ đường đến MIM và XSS. Cảm ơn vì điều đó. – marue
@marue CSRF không phải là gửi dữ liệu độc hại đến máy chủ. Chủ yếu là về mạo danh vì trang web tấn công có thể gửi yêu cầu hợp pháp và xác thực thay mặt cho nạn nhân. Eavesdropping, MITM và XSS chỉ có nghĩa là nắm bắt mã thông báo CSRF giảm thiểu (mặc dù vì hầu hết các lược đồ quản lý xác thực sử dụng các phiên dựa trên cookie, bạn cũng có thể lấy ID phiên thay thế). – Gumbo
Vì vậy, CSRF là tất cả và "chỉ" về giả vờ là một người bạn không? Trường hợp không chỉ có nghĩa là không quan trọng, nhưng mọi thứ khác là một vector tấn công khác nhau. – marue