ログイン システムの保護では、ユーザーの資格情報を保護するためにパスワード ハッシュがよく使用されます。ただし、毎回異なるハッシュ値が表示されると、懸念が生じる可能性があります。
問題:
password_hash() でパスワードをハッシュしようとすると、生成される値が異なり、その後の検証はpassword_verify() が失敗します。
説明:
password_hash() は、セキュリティ目的でランダム化を使用しているため、毎回意図的に一意の値を返します。これにより、各パスワードに対応するハッシュが一意であることが保証され、ユーザー アカウントの攻撃や侵害がより困難になります。
検証:
ハッシュ化されたパスワードを適切に検証するには、元のハッシュ化されていないパスワードと保存されているハッシュ ($dbpassword) は、password_verify() の入力として使用する必要があります。この関数は、ハッシュ化されていないパスワードとハッシュ化されたパスワードを比較し、一致するかどうかを検証します。
セキュリティ強化:
セキュリティをさらに強化するには、ハッシュ コストを増やすことを検討してください。引数としてpassword_hash()に渡されます。以下の例の 15 など、コストが高くなると、ハッシュ アルゴリズムの反復回数が増えるため、計算負荷が高まり、ブルート フォース攻撃に対する耐性が高まります。
<code class="php">$password = password_hash($password4, PASSWORD_DEFAULT, ['cost' => 15]);</code>
以上がPHP でパスワードのハッシュ値が異なる理由とその検証方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。