在数据库中保护用户密码时,采用强大的加密技术至关重要。 PHP 5.5 引入了两个专门为此目的而设计的基本函数:password_hash() 和password_verify()。让我们深入研究它们的正确用法。
您提出的方法(涉及将成本和唯一的盐传递给password_hash())并不是最佳的。相反,依靠内置的盐和成本机制,它可以在内部安全地生成这些值。该函数返回一个组合了哈希和盐的哈希。
存储哈希和盐:
$hashAndSalt = password_hash($password, PASSWORD_BCRYPT);
将 $hashAndSalt 插入数据库而不是拆分盐和哈希。
验证密码:
if (password_verify($password, $hashAndSalt)) { // Verified }
从数据库中检索$hashAndSalt,并使用password_verify()直接将其与提供的密码进行比较。它将在内部处理盐比较。
其他安全注意事项:
虽然使用这些函数是实现安全密码管理的一个步骤,但请考虑其他措施,例如:
以上是如何使用password_hash() 和password_verify() 在PHP 5.5 中安全地存储和验证用户密码?的详细内容。更多信息请关注PHP中文网其他相关文章!