8

この問題に関するさまざまな質問を見てきましたが、まだ尋ねられていない質問がいくつかあります。ユーザーがパスワードを忘れた場合、メール アドレスだけでパスワードをリセットできるようにしたいと思います (つまり、セキュリティの質問/回答はありません)。パスワードはソルトハッシュとして保存されるため、復元することはできません。代わりに、ユーザーがリセットを要求したことを確認した後、新しいパスワードを入力してもらいたいだけです。

言及されている一般的な方法は、単純に次のとおりです。

1) ランダムな Guid/暗号的に強力な乱数を作成する

2) 乱数を含む一意の URL をユーザーの電子メール アドレスに送信します。

3) 確認されると、ユーザーはパスワードの変更を求められます

しかし、これはMITM攻撃にさらされていませんか? 一時的なパスワードをインターネット経由で電子メールに送信することが安全でない場合、それを行うことと、攻撃者がナビゲートできる一意の URL を単に送信することの違いは何ですか? このシステムをより安全にする重要なステップをどこかで見逃していませんか (または、パスワードをリセットするためのより良い方法はありますか)?

ありがとう

4

3 に答える 3

9

ハッシュを正しく作成した場合、URL クリックは、リセットを要求した IP アドレスから取得する必要があります。これには、MITM が IP をスプーフィングしたり、ヘッダーを改ざんしたりする必要があります。これは可能ですが、問題のシステムに対してハッシュを一意に識別できるほど、ハッシュを「エンドアラウンド」することが難しくなります。

また、GUID を特定の基準の一方向ハッシュにすることもお勧めします。また、秘密鍵がロックを解除する公開鍵を使用してリクエスト内のシステム データを暗号化することもできます。これにより、URL がクリックされたときに、この同じ公開暗号化システム データがハッシュに付随する必要があり、これらの値を暗号化解除できる唯一のシステムは、サーバーに保持されている秘密鍵。基本的に、ハッシュへの疑似 PKI アタッチメント。

于 2010-01-27T22:59:02.670 に答える
7

ユーザーを認証する手段は、共有シークレット (パスワード) です。

ユーザーがその秘密を忘れた場合、新しい共有秘密を確立する方法が必要です。どのような方法で行っても、その新しい秘密を共有するためにユーザーを認証するという問題が発生します。

ユーザーの認証に使用できる唯一の情報が電子メール アドレスである場合、リセットを要求しているユーザーがその電子メール アドレスを管理していることを確認する何らかの方法が必要になります。

これを行う唯一の方法は、その電子メール アドレスにシークレットを電子メールで送信し、受信したかどうかを確認することです。

これは、十分に卑劣な MitM 攻撃に対して常に開かれています。

一時パスワードを送信しない理由は、「ユーザーが変更に煩わされず、自分の安全なパスワードではなく安全でない一時パスワードを使用し続ける」という問題を回避するためです。

于 2010-01-27T22:59:18.980 に答える
1

中間者攻撃のリスクを軽減するために、次の手段を使用します。

  • リセット要求は 1 回のみ使用できます。
  • リセット要求を使用しない場合、1 時間後に有効期限が切れます。
  • すべてのリセット要求は、最終的に完了したか期限切れかにかかわらず、永続的にログに記録されます。
于 2010-01-28T01:02:33.683 に答える