1

因此,在对此进行了相当多的研究之后,我想知道这是否是最佳实践方式。

当我将用户的密码发送到数据库时,我正在这样做:

// DB input:

$mySalt = time(); // generate random salt such as a timestamp
$password = crypt($_POST['password'], $mySalt);
// submit $password and $mySalt to DB here via PDO

当我在登录时检查密码时,我正在这样做:

// At login:

// retrieve the password and the salt from the DB
if(crypt($_POST['password'], $saltFromDb) === $passFromDb)
// allow login

这是正确的方法还是我错过了什么?谢谢你的任何建议。

4

1 回答 1

2

相反,您需要使用 crypt 中提供的内置加盐和散列函数。下面是一个使用好的散列算法调用 blowfish (bcrypt) 的示例:How do you use bcrypt for hashing passwords in PHP?

在这种情况下,算法越慢越好。

从 DB 获取它时,您只需使用crypt()评估整个字符串来了解它是否验证为正确的密码等。

于 2012-08-08T23:41:58.870 回答