我正在尝试验证是否已在注册表单中获取username
或email
,但我不明白该怎么做,因为两者都在我的数据库中使用password_hash()
进行哈希处理,我该如何比较,用户输入与 pdo 中的数据库?请解释一下代码。
如果您的电子邮件是使用每个哈希的唯一盐进行哈希处理的,则除了针对数据库中的所有哈希测试指针之外,无法测试任何特定电子邮件是否存在。 例如:
foreach ($db->query('SELECT email_hash FROM users') as $user) {
if (password_verify($_POST['email'], $user['email_hash'])) {
$found = true;
break;
}
}
没有其他方法,因为如果没有单独的盐,你就无法重新创建哈希,而且由于你不知道你要找什么盐,你只需要做所有的事情。
如果您要对需要在数据库中搜索的数据进行哈希处理,至少不能对其进行加盐处理。但是,如果它没有腌制,它对你试图防御的情况几乎没有保护。底线:您需要查询的哈希数据毫无意义。