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