Password_hash 同じ入力に対して異なるハッシュを生成する
ログイン システムでは、セキュリティのためにパスワードをハッシュするのが一般的です。ただし、一部のユーザーは、password_hash が同じパスワードに対して毎回異なるハッシュ値を生成するという問題に遭遇する可能性があります。これにより、password_verify() を使用した検証が成功しなくなります。
Password_hash の動作を理解する
Password_hash は、ハッシュ操作ごとに一意のソルトを生成するように設計されています。このソルトはハッシュ化する前にパスワードに追加されるため、ハッシュ値を予測することは事実上不可能になります。同じパスワードであっても、ランダム化されたソルトにより、毎回異なるハッシュが生成されます。
検証の問題の解決
パスワードを検証するには、元のパスワードを指定する必要があります。ハッシュ化されていないパスワードを、password_verify() の最初の引数として使用します。 2 番目の引数は、データベースに保存されているハッシュされたパスワードである必要があります。
検証用のサンプル コード
$password4 = 'PlaintextPassword'; $dbpassword = 'HashedPasswordFromDatabase'; if (password_verify($password4, $dbpassword)) { // Password verified } else { // Password does not match }
追加のセキュリティ対策
必要に応じて、コスト係数を増やすことで、password_hash のセキュリティを強化できます。デフォルトのコストは 10 ですが、保護を強化するには 15 などのより高い値を設定できます。
$password = password_hash($password4, PASSWORD_DEFAULT, ['cost' => 15]);
以上がPassword_hash が同じ入力に対して異なるハッシュを生成するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。