コミュニティ Web サイトをプログラミングしています。
「パスワードを忘れた」機能を構築したい。
さまざまなサイトを見回してみると、次の3 つのオプションのいずれかが採用されていることがわかりました。
パスワードを変更できる固有の非表示 URL へのリンクが記載されたメールをユーザーに送信します (Gmail および Amazon)。
ランダムに生成された新しいパスワードを記載したメールをユーザーに送信します(Wordpress)
ユーザーに現在のパスワードを送信します(www.teach12.com)
オプション #3はユーザーにとって最も便利に思えますが、私はパスワードを MD5 ハッシュとして保存しているため、 MD5 は元に戻せないため、オプション #3 をどのように使用できるかわかりません。これは、Web サイトがパスワードを平文でどこかに保存している必要があり、少なくとも平文のパスワードが安全でない電子メールでユーザーに送信されていることを意味するため、安全でないオプションのようです。それとも、ここで何か不足していますか?
したがって、オプション 1 を実行できない場合は、ユーザーのパスワードを変更してユーザーに送信するだけでよいため、オプション 2が最も簡単にプログラムできます。安全でない電子メールを介して通信されるライブパスワードを持っている必要があるため、これはやや安全ではありません. ただし、これはトラブルメーカーによって悪用され、無作為に電子メールを入力したり、さまざまなユーザーのパスワードを絶えず変更したりして、ユーザーを悩ませる可能性もあります。
オプション #1が最も安全に思えますが、有効期限が切れる隠し URL などを処理するために少し余分なプログラミングが必要ですが、大規模なサイトが使用しているようです.
これらのさまざまなオプションを使用/プログラミングした経験はありますか? 見逃したオプションはありますか?