Tôi đang xây dựng một dịch vụ web sử dụng riêng JSON cho nội dung yêu cầu và phản hồi của nó (tức là không có tải trọng được mã hóa biểu mẫu).
Một dịch vụ web có dễ bị tấn công CSRF không nếu những điều sau là đúng?
POSTVí dụ: bất kỳ yêu cầu nào không có đối tượng JSON cấp cao nhất{"foo":"bar"}sẽ bị từ chối với 400. Ví dụ: mộtPOSTyêu cầu có nội dung42sẽ bị từ chối.Bất kỳ
POSTyêu cầu nào có loại nội dung khácapplication/jsonsẽ bị từ chối với 400. Ví dụ: mộtPOSTyêu cầu có loại nội dungapplication/x-www-form-urlencodedsẽ bị từ chối.Tất cả các yêu cầu GET sẽ An toàn và do đó không sửa đổi bất kỳ dữ liệu phía máy chủ nào.
Khách hàng được xác thực thông qua cookie phiên mà dịch vụ web cung cấp cho họ sau khi họ cung cấp cặp tên người dùng / mật khẩu chính xác thông qua POST với dữ liệu JSON, chẳng hạn
{"username":"user@example.com", "password":"my password"}.
Câu hỏi phụ: Các yêu cầu PUTvà DELETEcó bao giờ dễ bị tấn công bởi CSRF không? Tôi hỏi vì có vẻ như hầu hết (tất cả?) Trình duyệt không cho phép các phương pháp này trong các biểu mẫu HTML.
CHỈNH SỬA: Đã thêm mục # 4.
CHỈNH SỬA: Cho đến nay, có rất nhiều nhận xét và câu trả lời tốt, nhưng không ai đưa ra một cuộc tấn công CSRF cụ thể mà dịch vụ web này dễ bị tấn công.