Web サイトにユーザーがいて、そのパスワードは暗号化 (md5) され、データベースに保存されています。今、私は彼らの電子メールを持っています。誰かがパスワードを忘れた場合、パスワードをリセットするためのリンクを彼に送りたいです。
誰でもこれを行う方法についてアドバイスできますか? ベストプラクティスはどれですか?
よろしく、ゾラン
Web サイトにユーザーがいて、そのパスワードは暗号化 (md5) され、データベースに保存されています。今、私は彼らの電子メールを持っています。誰かがパスワードを忘れた場合、パスワードをリセットするためのリンクを彼に送りたいです。
誰でもこれを行う方法についてアドバイスできますか? ベストプラクティスはどれですか?
よろしく、ゾラン
mail()
ハッシュ化されたランダム文字列を使用してメールを送信し、データベースに追加する必要があります。電子メールには、「domain.com/forgot.php?h=HASHEDSTRING」のようなリンクが含まれている必要があります。そのページで、ハッシュされた文字列を持っているユーザーを確認し、パスワードをリセットするためのフィールドを出力する必要があります。
かなり一意で、ランダムに生成されたトークン文字列 (非常に長い) であるデータベース内の列をポップします。ユーザーがパスワードのリセットを要求したら、確認のためにそのトークンを電子メールで送信します。リンク (別名 GET) を介してそのトークンを返すと、ユーザーがメール アドレスにアクセスできることが確認され、その時点でパスワードをリセットできるようになります。
次のようにできます。
ユーザーがパスワードを忘れた場合、登録済みの電子メールを入力できるようにします。
パスワードのリセット リンクを記載したメールを送信します。リンクには md5 (一部のデータ) が含まれている必要があります。例: www.ex.com/md5_data
メールを送信する前に、入力された確認メールが存在します。存在する場合は、ユーザー ID を取得し、ユーザー ID を保存し、メールと一緒に送信する md5(data) を送信します。
ユーザーがメールに送信されたリンクをクリックすると、URLデータを取得し、そのmd5データがテーブルに存在するかどうかを確認し、存在する場合はユーザーIDを取得し、ユーザーIDを使用して新しいパスワードを設定してパスワードを更新し、テーブルからmd5データを削除できるようにします彼がもう一度リンクをクリックしても、機能しないはずです。