0

私のページには、次のようなスクリプトで保護された領域があります: http://www.wikihow.com/Create-a-Secure-Login-Script-in-PHP-and-MySQL 今必要なのは、ある種のパスワードですパスワードを忘れた場合のリセット機能。ユーザーはほんの数人で、できるだけ簡単にできるようにしています。

だから私はそれがどのように機能すると思いますか:

  1. ユーザーはそこに電子メールアドレスを入力します
  2. ユーザーは、sha512 でハッシュされたパスワードとそのユーザー名を GET パラメータとして含むリンクが記載された電子メールを受け取ります。
  3. スクリプトは、ユーザー名とパスワードのハッシュが適合するかどうかをチェックします
  4. ユーザーはそこに新しいパスワードを入力できるようになりました

このように行う強力なセキュリティ上の弱点はありますか、それとも一般的な方法ですか? そのためのベストプラクティスは何ですか?私は本当に追加のセキュリティ質問やそのようなものを望んでいません...

更新: パスワードはハッシュ化され、ソルト化されています。

4

3 に答える 3

3

暫定フローは次のようになります。

  1. ユーザーが「パスワードのリセット」リンクをクリックします。
  2. メールは、ユーザーが登録したアドレスに送信されます。
  3. 電子メールには、1 時間で期限切れになる一意のリンクが含まれています。
  4. ユーザーがリンクをクリックすると、パスワード フィールドのあるページに移動します。
  5. ユーザーが新しいパスワードを入力すると、パスワードはハッシュされて保存されます。

参考までに、パスワードやそのハッシュは決して送信しないでください。

  1. パスワードは、生の形式またはソルトなしのハッシュとして保存しないでください。
  2. ハッシュは決して送信されるべきではありません。
于 2013-06-03T08:50:38.077 に答える
1

暗号化されたパスワード ハッシュを置くべき唯一の場所は、サーバー バックエンドであり、それ以外の場所ではありません。

攻撃者は、チェックするハッシュを持っている場合、ほぼ無限の処理能力を使用してハッシュを総当たり攻撃できますが、それ以外の場合は、サーバーの容量によって制限される必要があり、すぐに気付くでしょう.

セキュリティを維持したい場合は、ランダムなパスワード リセット キーを生成し、ユーザーの登録メールに送信します (メール セキュリティはユーザーの問題です)。ユーザーがそのキーを使用してサイトに戻った場合 (通常は GET パラメーターとして)、ユーザーにパスワード変更フォームへのアクセスを許可できます。

私の知る限り、これは今日のパスワード リセットの最も一般的で安全な方法の 1 つです (2 要素認証などにもかかわらず)。

于 2013-06-03T08:52:27.573 に答える