首頁 >資料庫 >mysql教程 >為什麼我的加鹽密碼驗證總是回傳 True?

為什麼我的加鹽密碼驗證總是回傳 True?

DDD
DDD原創
2024-12-11 21:35:11866瀏覽

Why is My Salted Password Authentication Always Returning True?

收回用於身份驗證的加鹽密碼

當使用儲存在資料庫中的加鹽密碼實現會員網站時,需要仔細注意登入機制。雖然使用加鹽密碼方法可以增強安全性,但它也會在驗證使用者憑證方面帶來挑戰。

問題:

會員登入頁面上發生錯誤,其中任何條目似乎都通過了驗證用戶存在的檢查。具體來說, $result === false 的評估總是回傳 false,從而阻止了預期的行為。

解決方案:

問題的根本原因在於方法用於從資料庫檢索密碼雜湊。要驗證使用者憑證,必須先檢索與所提供的使用者名稱相對應的加鹽密碼雜湊:

$saltQuery = "SELECT salt FROM users WHERE name = '$name';";
$result = mysqli_query($connect, $saltQuery);
$row = mysqli_fetch_assoc($result);
$salt = $row['salt'];

取得鹽後,應使用它來對所提供的密碼進行雜湊:

$saltedPW = $password.$salt;
$hashedPW = hash('sha256', $saltedPW);

產生的雜湊密碼應該用於在資料庫中查詢使用者的密碼存在:

$sqlQuery = "SELECT * FROM users WHERE name = '$name' AND password = '$hashedPW'";

進一步考慮:

驗證密碼時,使用強密碼雜湊函數(如bcrypt 或Argon2)至關重要,它們提供安全且耗時的功能雜湊演算法。此外,應使用準備好的語句來防止 SQL 注入攻擊。

以上是為什麼我的加鹽密碼驗證總是回傳 True?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn