password_verify和密码中的特殊字符

时间:2018-08-21 00:17:51

标签: php passwords

我知道这是一个常见的问题,但是我找不到答案。

我正在使用PHP的password_verify。如果密码包含“&”,则不会验证。没有“&”就可以了。我该怎么做才能逃脱角色?

<?php

$password_entered = "Password&";
$stored_secret = '$2y$12$oG8A4pbZSfQFxBQ0cHcJTuJ1h7wzzhlMnqjhnurN4.0/AfS/Wp9W2';
if (password_verify($newstr, $stored_secret))
{
echo "Right\n";
}
else
{
echo "Wrong\n";
}
?>

1 个答案:

答案 0 :(得分:2)

首先忽略未设置$newstr,而您的意思是$password_entered

看起来像您在用户输入上运行的htmlentities / htmlspecialchars(您没有显示),所以正在破坏它。

以下与您的哈希匹配:Password&amp;

<?php
$password_entered = "Password&amp;";
$stored_secret = '$2y$12$oG8A4pbZSfQFxBQ0cHcJTuJ1h7wzzhlMnqjhnurN4.0/AfS/Wp9W2';
if (password_verify($password_entered, $stored_secret)) {
    echo "Right\n";
} else {
    echo "Wrong\n";
}
?>

https://3v4l.org/SjfRG