驗證資料庫登入中的加鹽密碼
開發會員網站時,保護登入憑證至關重要。一個重要的方面是實現加鹽密碼,它透過在散列密碼之前向密碼添加隨機字串來增強密碼保護。
問題:
在提供的程式碼中,儘管密碼輸入不正確,但登入頁面中的錯誤允許任何成員存取網站。這表示密碼有效性檢查有問題。
答案:
要驗證加鹽密碼,我們無法直接將輸入的密碼與儲存的雜湊進行比較。相反,我們必須:
mysqli的範例程式碼:
$mysqli = new mysqli($dbHost, $dbUser, $dbPassword, $dbName); // Find the stored password hash in the db $sql = 'SELECT password FROM users WHERE username = ?'; $stmt = $mysqli->prepare($sql); $stmt->bind_param('s', $_POST['username']); $stmt->execute(); // Check if user exists and fetch the hash $isPasswordCorrect = false; $stmt->bind_result($hashFromDb); if ($stmt->fetch() === true) { $isPasswordCorrect = password_verify($_POST['password'], $hashFromDb); }
範例程式碼PDO:
$dsn = "mysql:host=$dbHost;dbname=$dbName;charset=utf8"; $pdo = new PDO($dsn, $dbUser, $dbPassword); // Find the stored password hash in the db $sql = 'SELECT password FROM users WHERE username = ?'; $stmt = $pdo->prepare($sql); $stmt->bindValue(1, $_POST['username'], PDO::PARAM_STR); $stmt->execute(); // Check if user exists and fetch the hash $isPasswordCorrect = false; if (($row = $stmt->fetch(PDO::FETCH_ASSOC)) !== false) { $hashFromDb = $row['password']; $isPasswordCorrect = password_verify($_POST['password'], $hashFromDb); }
透過遵循此流程,您可以有效驗證您的登入頁面中的加鹽密碼,確保您的會員網站的安全。
以上是如何安全地驗證資料庫登入系統中的加鹽密碼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!