0

パスワード回復のために、私の vb.net アプリケーションは、次の形式のリンクを含む電子メールをユーザーに送信します。

http://<password-reset page url>?id=<userid>&tpr=<times Password Reset>&time=<time when the link was generated>

Times Password Resetユーザーがパスワード リセット リンクを使用してパスワードをリセットした回数です。データベースの値とクエリ文字列の値が一致します。同じパスワード リセット リンクを 2 回使用してパスワードをリセットできないようにするため。 Timeリンクが使用されるまでに 24 時間以上経過していないことを確認するために使用されます。またuserid、ユーザーを識別するために使用されます。

すべての条件が一致する場合、ユーザーは自分のパスワードを変更するように求められます。のすべてのフィールドは、AES で暗号化されています。

この方法が安全かどうか知りたいですか?

4

1 に答える 1

1

簡単な答え: いいえ。

URL で使用するすべてのパラメーターを忘れてください。ランダムで推測不可能な文字列 (UUID など) を 1 つ生成し、それをパラメーターとして URL に入れるだけです。次に、保存した電子メール アドレスを介してその URL をユーザーに送信します。UUID を、URL にあるすべてのパラメーターと共にデ​​ータベースに保存します。ユーザーがリンクをクリックすると、すべてのパラメーター (タイムスタンプなど) が検証され、新しいパスワードが設定されます。

OWASP Cheat Sheet on Password Resetも参照してください。

于 2013-06-20T13:44:01.880 に答える