バックグラウンド:
RESTWebサービスの認証スキームを設計しています。これは「本当に」安全である必要はありません(それはより個人的なプロジェクトです)が、私はそれを運動/学習体験として可能な限り安全にしたいです。面倒なことや、ほとんどの場合、SSLを設定する費用がかからないので、SSLを使用したくありません。
これらのSOの質問は、私が始めるのに特に役立ちました。
- RESTful認証
- REST API/Webサービスを保護するためのベストプラクティス
- 最高のSOAP/REST / RPC Web APIの例?そして、なぜあなたはそれらが好きですか?そして、彼らの何が問題になっていますか?
私はAmazonS3の認証の簡略化されたバージョンを使用することを考えています(私はOAuthが好きですが、それは私のニーズには複雑すぎるようです)。リプレイ攻撃を防ぐために、サーバーから提供されたランダムに生成されたナンスをリクエストに追加しています。
質問に答えるには:
S3とOAuthはどちらも、いくつかの選択されたヘッダーとともにリクエストURLに署名することに依存しています。どちらも、 POSTまたはPUTリクエストのリクエスト本文に署名しません。これは、URLとヘッダーを保持し、リクエストの本文を攻撃者が必要とするデータに置き換える中間者攻撃に対して脆弱ではありませんか?
署名される文字列にリクエスト本文のハッシュを含めることで、これを防ぐことができるようです。これは安全ですか?