我的网站上有一个使用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
}
这似乎是一个简单的答案,但我只是想确保我做得对。
答案 0 :(得分:1)
您不需要对其进行清理,因为您要将其与数据库中的哈希密码进行比较
加上register.php你不需要清理密码,因为你要使用password_hash()
哈希密码
然后将其保存到数据库中,这不会造成任何伤害,因为它已经散列
对寄存器上的密码进行任何清理可能会破坏它 例如,如果用户在清理后使用了像 mypassword'1'2'3 这样的密码,那将是 mypassword \'1 \'2 \'3 这是不一样的
希望有所帮助