Lý lịch:
Tôi đang thiết kế sơ đồ xác thực cho dịch vụ web REST. Điều này không "thực sự" cần phải được bảo mật (đó là một dự án cá nhân) nhưng tôi muốn làm cho nó an toàn nhất có thể như một trải nghiệm tập thể dục / học tập. Tôi không muốn sử dụng SSL vì tôi không muốn rắc rối và chủ yếu là chi phí thiết lập nó.
Những câu hỏi SO này đặc biệt hữu ích để giúp tôi bắt đầu:
- Xác thực RESTful
- Thực tiễn tốt nhất để bảo mật API REST / dịch vụ web
- Ví dụ về API web SOAP / REST / RPC tốt nhất? Và tại sao bạn thích chúng? Và có chuyện gì với họ vậy?
Tôi đang nghĩ đến việc sử dụng phiên bản xác thực đơn giản của Amazon S3 (tôi thích OAuth nhưng có vẻ quá phức tạp đối với nhu cầu của tôi). Tôi đang thêm một nonce được tạo ngẫu nhiên , được cung cấp bởi máy chủ, vào yêu cầu, để ngăn chặn các cuộc tấn công phát lại.
Để có được câu hỏi:
Cả S3 và OAuth đều dựa vào việc ký URL yêu cầu cùng với một vài tiêu đề được chọn. Không ai trong số họ ký tên cơ quan yêu cầu cho các yêu cầu POST hoặc PUT. Đây không phải là dễ bị tấn công giữa chừng, mà giữ url và tiêu đề và thay thế cơ thể yêu cầu với bất kỳ dữ liệu nào kẻ tấn công muốn?
Có vẻ như tôi có thể bảo vệ chống lại điều này bằng cách đưa vào hàm băm của thân yêu cầu trong chuỗi được ký. Điều này có an toàn không?