检查 pdo 中是否已存在用户名(哈希)或电子邮件(哈希)



我正在尝试验证是否已在注册表单中获取usernameemail,但我不明白该怎么做,因为两者都在我的数据库中使用password_hash()进行哈希处理,我该如何比较,用户输入与 pdo 中的数据库?请解释一下代码。

如果您的电子邮件是使用每个哈希的唯一盐进行哈希处理的,则除了针对数据库中的所有哈希测试指针之外,无法测试任何特定电子邮件是否存在。 例如:

foreach ($db->query('SELECT email_hash FROM users') as $user) {
if (password_verify($_POST['email'], $user['email_hash'])) {
$found = true;
break;
}
}

没有其他方法,因为如果没有单独的盐,你就无法重新创建哈希,而且由于你不知道你要找什么盐,你只需要做所有的事情。

如果您要对需要在数据库中搜索的数据进行哈希处理,至少不能对其进行加盐处理。但是,如果它没有腌制,它对你试图防御的情况几乎没有保护。底线:您需要查询的哈希数据毫无意义。

最新更新