gpt4 book ai didi

php - 如何有效地同时哈希多个密码?

转载 作者:行者123 更新时间:2023-11-29 22:56:31 25 4
gpt4 key购买 nike

我有一个 mysql 表,其中包含 userid、password、hashedpassword 列。我曾经将密码以纯文本形式存储在密码列中。我现在意识到这是 Not Acceptable ,现在想对所有这些进行哈希处理,并将它们以正确的方式存储在哈希密码字段中。

您会对下面的脚本感到生气,因为它的效率非常低。正如您可能猜到的那样,它在我的服务器上超时了。有人可以帮助显然缺乏经验的程序员以正确的方式更新数据库中的所有这些字段吗?显然,为每条记录连接到数据库是愚蠢的:(...

$sql = "SELECT * 
FROM users";
$result = mysqli_query($connection, $sql);
if (!$result) {
die("Database query failed: " . mysqli_error($connection));
} else {
while ($row=mysqli_fetch_array($result)) {
$userid=$row['userid'];
$passwordhashed=password_hash($row['password'], PASSWORD_DEFAULT);
$sql = "UPDATE users
SET hashedpassword='$passwordhashed'
WHERE userid='$userid'
LIMIT 1";
$update = mysqli_query($connection, $sql);
if (!$update) {
die("Database query failed: " . mysqli_error($connection));
} else {
//we good
}

}

}

最佳答案

出于好奇,您的表中有多少用户行?

我在升级到password_hash功能时在我的系统上工作了一段时间(来自 - 同样 - 不明智的纯文本存储),我制作了一个脚本来用新密码更新密码,使用这种哈希方法。

区别在于部署 - 我向所有客户(约 1600 个)发送了电子邮件,并告诉他们单击电子邮件中的链接以更新密码作为预防措施,输入他们当前的密码和新的(不同的)密码,因此每个密码都是单独更新并且纯文本密码不会用作哈希密码,如果有人已经拥有您的表的副本并且可以查找纯文本密码然后只需转换它们哈希值不会锁上那扇门,相反,他们仍然可以进入并扰乱用户帐户。

(如果您认为“哦,没关系,没有人会拥有我的表格的副本”,这种思想逻辑也意味着您不需要首先加密您的纯文本密码! -- MySQL 可能会被黑客攻击,如果黑客是细心和体贴的,而不是有人炫耀他们的垃圾邮件黑客技能,那么你不需要知道这一点)

这也意味着只有不遵循电子邮件建议的客户才会面临当前或 future 违规的风险。我还在网站登录中包含了类似的转换代码,强制在此过程中选择新的密码。

关于php - 如何有效地同时哈希多个密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28687631/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com