簡體   English   中英

無需密碼即可登錄

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM