[英]Possible to login without the digits in the password
我剛剛發現我的密碼保護區域沒有受到保護。 需要密碼才能使用數字。 現在,如果密碼末尾有數字,只要密碼的az部分正確,就可以接受登錄。 為什么會這樣,我該如何糾正呢? (PHP 5.4.28)
function generate_hash($password)
{
$salt = openssl_random_pseudo_bytes(22);
$salt = '$2a$%13$' . strtr($salt, array('_' => '.', '~' => '/'));
return crypt($password, $salt);
}
$bind = array(":email" => $email, ":password" => crypt($password, generate_hash($password) ) );
$results = $db->select("users", 'email=:email AND password=:password', $bind);
我不知道您的問題的具體情況,但是您使用的哈希完全錯誤。 要使用crypt
,請執行以下操作:
注冊時:
$salt
參數: $2a$xx$...
(注意:否%
,這可能會導致問題) crypt($password, $salt)
散列密碼 登錄時:
crypt($enteredPassword, $databaseHash)
生成哈希 你根本不這樣做。 您可能還應該改用password_hash
,它可以避免使用原始crypt
API時遇到的許多陷阱。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.