3

私は「パスワードのリセット」フォームを設計および開発しています。このフォームでは、ユーザーがユーザー名/メールアドレスを入力して、アプリケーションがユーザーがクリックして新しいパスワードを入力できるようにメールでリンクを送信します。私の興味はすべてそのリンクについてです、私はこれらの仕事をどのように進めるべきですか(私は意見に基づく答えを探しているのではなく、むしろ業界の慣行、あなたのアプリケーションのために働いたステップを探しています)。

  • リンクでブックマークが有効になっていないことを確認してください(同じリンクでパスワードをリセットすることを許可しないでください)

  • リンクに有効期限情報も含まれている場合、期限切れのリンクをクリックするとどうなりますか

また、現在の実行計画で直面する可能性のある他の問題を提供することで、私を助けることができます。

4

3 に答える 3

3

似たようなものを実装しました。

  1. ユーザーは「パスワードを紛失しました」をクリックしてメールアドレスを入力します。

  2. 送信時に、メインパスワードが影響を受けないようにリセットコードを生成します。(ソルトハッシュも必要です)。リセットコードを使用するためのタイムアウトを設定します。

  3. ユーザー訪問はパスワードフォームを変更します。メールアドレスを入力し、コードをリセットし、新しいパスワードを入力し、パスワードを確認します。成功したら、リセットコードをクリアして新しいパスワードを設定し、ログインページにリダイレクトします。

ユーザーが使いやすいように、URLの一部としてリセットコードを作成することにしました。ブックマークに関しては、まあ、そのようなすべてのユーザーを保護することはできません。そのページをブックマークしたい場合は、許可してください。上記の措置は、彼らがラインから外れたものを提出するのを止めるはずです。

于 2011-11-24T08:35:17.150 に答える
2

リセットフォームの送信時に、ランダムコードを生成し、データベースに保存し(必要に応じて有効期限情報を、使用されている場合はフラグを付けて)、リンクのパラメーターとして含めます。

リンクをクリックすると、ユーザーはリセットフォームに戻り、コード(パラメーター)がデータベースにあり、有効期限が切れていないか、まだ使用されていないかどうかを確認できます。

于 2011-11-24T08:35:28.240 に答える
2

私が好きなアプローチは、次のような文字列を作成することです。[username] [currentPassword] [expirationDate]、ハッシュしてから、resetPassword.php?username = [username]&exp=[のようなリンクを作成します。有効期限]&hash = [hash]

resetPassword.phpで、GET paramsの情報と以前のパスワードを使用してこのハッシュを確認し、ハッシュが一致する場合は、パスワードのリセットを続行します。このように、リンクは期限切れになるたびに期限切れになり、パスワードが変更された後、そのリンクでパスワードをリセットすることはできなくなります。

別のアプローチは、リセットされたパスワードコードをデータベースに保存することです。

于 2011-11-24T08:39:46.257 に答える