PDO password_verify,我需要清理吗?

时间:2016-07-16 00:01:14

标签: php mysql pdo

我的网站上有一个使用pdo的login.php文件。对于基于用户输入到目前为止的所有其他查询,我一直在使用预准备语句,以防止sql注入。但是,对于登录部分,我使用password_verify()将输入的密码与数据库中的散列值进行比较。我无法真正使用准备好的语句,因为我的代码如下所示:

if($res->fetchColumn() == 1){
        $stmt2 = $conn->prepare("SELECT `password` FROM members WHERE :email = `email`");
        $stmt2->bindParam(':email', $email);
        $res2 = $stmt2->execute();
        $passhash = $res2->fetchColumn();
        $password_verify($_POST[password], $passhash);
        //^^ do i need to sanitize that?


    }else{
        //login failed
    }

这似乎是一个简单的答案,但我只是想确保我做得对。

1 个答案:

答案 0 :(得分:1)

您不需要对其进行清理,因为您要将其与数据库中的哈希密码进行比较

加上register.php你不需要清理密码,因为你要使用password_hash()哈希密码 然后将其保存到数据库中,这不会造成任何伤害,因为它已经散列

对寄存器上的密码进行任何清理可能会破坏它 例如,如果用户在清理后使用了像 mypassword'1'2'3 这样的密码,那将是 mypassword \'1 \'2 \'3 这是不一样的

希望有所帮助