0

ボブがこのHTTPリクエストをAPIに送信して、メールを更新したとします。

/user/update?email=bob@example.com&userid=1234&sig=x1zz645

これで、Zerocoolという名前のスニファが、後で使用するためにこの要求を記録しました。

数日後、ボブは自分の電子メールを再びに更新しましたemail=newbob@example.com

数時間後、Zerocoolは数日前にスニッフィングしたものを使用することを決定し、リクエストを実行します。

/user/update?email=bob@example.com&userid=1234&sig=x1zz645

サーバーはそれを受け入れ、ボブはなぜ古い電子メールが戻ってくるのか混乱しています。

SSLを使用せずにこれを防ぐにはどうすればよいですか?

4

3 に答える 3

2

最近のリクエストのログを保管してください。そのような要求にタイムスタンプを埋め込み、ログに存在するか、ログより古いものを拒否します。適切な方法として、タイムスタンプにプライベートmd5チェックサムで署名して、作成できないようにします。

于 2012-08-12T19:06:51.140 に答える
0

タグに記載されているSSLを使用してください。すでにスニッフィング攻撃とリプレイ攻撃の両方の影響を受けません。それが存在します。使用は無料です。できます。終わった。

SSLを使用できない場合は、タグから削除してください。

于 2012-08-13T03:45:15.940 に答える
0

ハッシュベースのメッセージ認証コード(HMAC)を使用してAPIを保護し、前述のようなリプレイ攻撃を回避できます。サーバーとクライアントの両方に共有秘密のAPIキーがあります。

Amazon S3 Rest APIは、同じ手順を使用してリクエストを認証および検証します。こちらのドキュメントを参照してください。

更新:ブルーノが指摘したように、HMAC自体はリプレイ攻撃を防ぐことはできません。メッセージに秘密鍵で署名された一意の識別子を含め、サーバーで検証する必要があります。

于 2012-08-13T09:16:29.007 に答える