web-dev-qa-db-ja.com

password_hashは毎回異なる値を返します

ログインシステムを作成していますが、パスワードをハッシュして安全性を高めたいのですが、毎回異なるハッシュが返され、password_verify()を使用して検証することもできません。コードは次のとおりです。

$password = password_hash($password4, PASSWORD_DEFAULT);

これが検証用の私のコードです:

if(password_verify($password4, $dbpassword))
16
ItzBenteThePig

だから、一度に1つの部分を取りましょう

しかし、それは毎回異なるハッシュを返します

それがアイデアです。 password_hashは、毎回ランダムなソルトを生成するように設計されています。つまり、すべてに使用されている1つのソルトを推測して大きな足を上げるのではなく、各ハッシュを個別に分割する必要があります。

MD5やその他のハッシュを行う必要はありません。 password_hashのセキュリティを高めたい場合は、より高いコストを渡します(デフォルトのコストは10です)

$password = password_hash($password4, PASSWORD_DEFAULT, ['cost' => 15]);

確認するために

if(password_verify($password4, $dbpassword))

したがって、$password4はハッシュされていないパスワードであり、$dbpasswordはデータベースに保存されているハッシュである必要があります。

26
Machavity