我只是有点困惑,不知道在这个文件中可以放在哪里。该文件目前用于pw验证,但我希望使用password_hash对pw进行哈希处理。话虽如此,我理解密码哈希是如何工作的,更困惑于如何在我的案例中正确实现它。我已经找到了许多创建pw并对其进行哈希的例子,但需要帮助从数据库中提取pw并进行哈希并更新数据库。在我有了之后,我可以使用一些类似的东西
if(password_verify($userpassword,hash(({做某事
还是我看待这个问题的方式不对,需要采取不同的方法。我是php的新手,它不是我的强大套件,任何帮助或信息都会很棒。
您需要编写一个单独的脚本来运行一次,以便将所有明文密码更新为password_hash()
生成的密码。
类似于:
// FOR UPDATE locks the rows
$res = $dbh->query('SELECT id, password FROM users FOR UPDATE;');
$update = $dbh->prepare('UPDATE users SET password = ? WHERE id = ?;');
foreach($res->fetch_all() as $row) {
// https://www.php.net/manual/en/function.password-needs-rehash
if( password_needs_rehash($row['password'], PASSWORD_DEFAULT) {
$hash = password_hash($row['password'], PASSWORD_DEFAULT);
$update->bind_param('ss', $hash, $row['id']);
$update->execute();
}
}
通常,您可以将password_needs_rehash()
实现到登录工作流中,以动态升级哈希,但如果您的所有内容都是明文的,则不必等待登录,并且您绝对需要尽快获得所有哈希。