建立安全應用程式時,處理加鹽密碼至關重要。然而,根據儲存的加鹽雜湊有效驗證使用者密碼可能具有挑戰性。本文將引導您從資料庫檢索加鹽密碼和驗證使用者身分所涉及的步驟。
檢索加鹽密碼:
下面的範例程式碼示範如何使用mysqli 連接從MySQL 資料庫擷取加鹽密碼雜湊:
<?php $servername = 'localhost'; $username = 'root'; $pwd = ''; $dbname = 'lp001'; $connect = new mysqli($servername,$username,$pwd,$dbname); if ($connect->connect_error){ die('connection failed, reason: '.$connect->connect_error); } $name = mysqli_real_escape_string($connect, $_POST['name']); $saltQuery = "SELECT salt FROM users WHERE name = '$name';"; $result = mysqli_query($connect, $saltQuery); if ($result === false){ die(mysqli_error()); } $row = mysqli_fetch_assoc($result); $salt = $row['salt']; ?>
此程式碼連接到資料庫,清理使用者輸入,並從使用者表中檢索與給定使用者名稱關聯的鹽。加鹽對於驗證密碼至關重要。
驗證使用者密碼:
檢索到加鹽密碼雜湊後,您可以驗證使用者提供的密碼是否符合它。以下程式碼顯示如何使用password_hash() 和password_verify() 函數來執行此操作:
<?php $password = mysqli_real_escape_string($connect, $_POST['password']); $saltedPW = $password.$salt; $hashedPW = hash('sha256', $saltedPW); $sqlQuery = "SELECT * FROM users WHERE name = '$name' AND password = '$hashedPW'"; if (mysqli_query($connect, $sqlQuery)){ echo '<h1>Welcome to the member site '.$name.'</h1>'; }else{ echo 'error adding the query: '.$sql_q.'<br> Reason: '.mysqli_error($connect); } ?>
這裡,使用檢索到的鹽對提供的密碼進行加鹽處理,然後使用安全雜湊函數進行散列。然後將雜湊密碼與資料庫中儲存的雜湊密碼進行比較。如果密碼匹配,則使用者通過身份驗證。
透過執行以下步驟,您可以有效地從資料庫檢索加鹽密碼並驗證使用者的密碼,而無需暴露實際密碼。這種方法確保了使用者憑證的安全,同時提供高效、安全的身份驗證。
以上是如何根據資料庫中的加鹽雜湊驗證使用者密碼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!