我知道这是一个常见的问题,但是我找不到答案。
我正在使用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";
}
?>
答案 0 :(得分:2)
首先忽略未设置$newstr
,而您的意思是$password_entered
。
看起来像您在用户输入上运行的htmlentities / htmlspecialchars(您没有显示),所以正在破坏它。
以下与您的哈希匹配:Password&
。
<?php
$password_entered = "Password&";
$stored_secret = '$2y$12$oG8A4pbZSfQFxBQ0cHcJTuJ1h7wzzhlMnqjhnurN4.0/AfS/Wp9W2';
if (password_verify($password_entered, $stored_secret)) {
echo "Right\n";
} else {
echo "Wrong\n";
}
?>