PHPpassword_*
関数を使用してパスワードハッシュを設定しました
1)password_hash($password, PASSWORD_BCRYPT, array("cost" => 11);
2)return password_verify($password, $hashedPassword)? true : false;
すべて正常に動作します。
また、2 つのパラメーター、$hashedPassword、およびアルゴリズムを使用する password_needs_rehash() 関数も見つかりました。例:
password_needs_rehash($hashedPassword, PASSWORD_BCRYPT);
アルゴリズムまたはコストが変更されたときにこれを使用することを理解しています。
if (!password_verify($password, $hashedPassword)) {
return false;
}
if (password_needs_rehash($hashedPassword, PASSWORD_BCRYPT)) {
$hashedPassword = password_hash($password, PASSWORD_BCRYPT);
// update user password in database with $hashedPassword
}
return true;
すべてが明らかです、私はただ疑いがあります。
password_needs_rehash() 関数を呼び出さずにコストを変更しようとすると、ログインできます。
ハッシュを生成する関数も変更してみます。アルゴリズムを PASSWORD_BCRYPT から PASSWORD_DEFAULT に変更します。
いつでもログインできます。
誰かがそれがどのように機能するか説明できますか?
アルゴリズムの変更時に再ハッシュしない場合、PHP password_* はこれをどのように処理しますか?
PS 質問に小さな質問... PHP function_* を使用すると、パスワードに "salt" を使用することが推奨されますか?
ありがとう!!