收回用於身份驗證的加鹽密碼
當使用儲存在資料庫中的加鹽密碼實現會員網站時,需要仔細注意登入機制。雖然使用加鹽密碼方法可以增強安全性,但它也會在驗證使用者憑證方面帶來挑戰。
問題:
會員登入頁面上發生錯誤,其中任何條目似乎都通過了驗證用戶存在的檢查。具體來說, $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中文網其他相關文章!