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?
POST
Ví 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ộtPOST
yêu cầu có nội dung42
sẽ bị từ chối.Bất kỳ
POST
yêu cầu nào có loại nội dung khácapplication/json
sẽ bị từ chối với 400. Ví dụ: mộtPOST
yêu cầu có loại nội dungapplication/x-www-form-urlencoded
sẽ 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 PUT
và DELETE
có 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.