php - password_hash 返回 false

问题描述 投票:0回答:1

我在写一篇 Password 类,而我使用的是 password_hashPASSWORD_DEFAULT 来创建哈希值。

文档中说 password_hash 也可以返回 false 如果散列失败。在这种情况下,我就会抛出一个异常,我想仔细测试这种情况。

你有一个字符串的例子吗?$password 以致于 password_hash($spassword, PASSWORD_DEFAULT) === false?

这跟 password_verify 回归 false 当它与哈希值不匹配时。

php hash passwords
1个回答
1
投票

即使是很老的问题,但我也有非常相同的问题,并做了一个小小的depeer研究。所以我在这里分享我的稀疏结果。

结论: 我认为最好是抓住 false 的情况下 null-情况下也是如此,尽管如果没有任何的 $options 提供的),愿它像它一样不可能。这也许是你的应用中最关键的部分! 特别是当使用 PASSWORD_DEFAULT因为它可能会随着时间的推移而改变,因此它的行为,或者旧版本的PHP被允许用于你的应用程序。我会在这里抛出一个致命的错误,甚至是 die 出,因为据我所知, false-只有在服务器严重配置错误的情况下才会发生。因此,它不能在单元测试中进行测试。

$hash = password_hash($password, PASSWORD_DEFAULT);

if (!$hash) {

  trigger_error("Fatal error when encrypting the password", E_USER_ERROR);
}
© www.soinside.com 2019 - 2024. All rights reserved.