检查pdo是否存在用户名(Hashed)或电子邮件(Hashed)alredy

时间:2017-08-16 14:10:02

标签: php pdo password-hash

我正在尝试验证用户名或电子邮件是否已在注册表单中获取,但我无法理解如何执行此操作,因为两者都在我的数据库中使用password_hash()进行哈希处理,我该如何比较,用户在pdo中输入数据库?请解释我的代码,我是php新手...谢谢,建议您的时间,最好的问候

1 个答案:

答案 0 :(得分:2)

如果您的电子邮件使用每个哈希的唯一salt进行哈希处理,则无法测试是否存在任何特定电子邮件,而不是针对数据库中的所有哈希测试针。 E.g:

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

没有其他方法,因为你不能在没有单独的盐的情况下重新创建哈希,并且由于你不知道你正在寻找什么样的盐,你只需要完成它们。

如果你要在数据库中哈希需要搜索的数据,至少它不会被腌制。但是,如果它没有被腌制,它对你想要防御的场景提供的保护很少。底线:您需要查询的散列数据非常无意义。

相关问题