忘れたパスワード/パスワードのリセットを処理するための最も安全な方法は何ですか?パスワードをユーザーに電子メールで送信する必要がありますか?もしそうなら、あなたは彼らにそれをリセットするように強制しますか?または、(電子メールを送信せずに)すぐにリセットし、それが彼らであることを確認するために他の情報を必要としますか?それとももっと良い方法がありますか?
3 に答える
パスワードがわからないため、ユーザーにメールで送信することはできません。PBKDF2やbcryptのようなものをストレージに適用することで「ハッシュ」しましたよね?
アカウントの所有者に確認せずにパスワードをリセットした場合、攻撃者は、被害者の電子メールアドレスを使用してリセットを要求することにより、少なくとも自分の電子メールを確認するまで、所有者のアカウントへのアクセスを拒否できます。
多くのアプリケーションにとって十分に安全な方法は、ランダムに生成された大きな番号を含むリンクをアカウント所有者に電子メールで送信することです。このトークンは、限られた期間のみ有効である必要があります。所有者がパスワードをリセットしたい場合は、リンクをクリックすると、アカウント所有者として認証されます。アカウント所有者は、新しいパスワードを指定できます。
メールでパスワードを送信しないでください。これが私が使用したステップバイステップのプロセスです:
- ユーザーにパスワードのリセットオプションを提供します。
- このオプションは、ユーザーの一意のトークンを保存します。トークンは最終的に期限切れになります(時間、日、または日)。
- トークンを含むリンクがユーザーに電子メールで送信されます。
- ユーザーはメールで送信されたリンクをクリックします。
- トークンが存在し、有効期限が切れていない場合、リンクは新しいパスワードフォームをロードします。そうでない場合は、新しいパスワードフォームを読み込まないでください。
- ユーザーが新しいパスワードを設定したら、トークンを削除して、ユーザーに確認メールを送信します。
新しいパスワードが設定されるまで、古いパスワードはアクティブなままである必要があります。パスワードをハッシュしてソルトすることを忘れないでください!
プログラムでやろうと思いますか?それともサーバー障害の質問ですか?
方法の1つは、ユーザーの電子メールアカウントへのリンクを送信することです。彼/彼女はリンクをクリックし、パスワードをリセットする安全なWebフォームにリダイレクトされます。
パスワードをユーザーに電子メールで送信しないでください