在保護登入系統中,通常會採用密碼雜湊來保護使用者憑證。然而,每次遇到不同的雜湊值可能會引起關注。
問題:
嘗試使用password_hash()對密碼進行雜湊,產生的值有所不同,後續驗證透過password_verify() 失敗。
說明:
password_hash() 由於出於安全目的使用隨機化而每次都會有意傳回唯一值。這可確保每個密碼對應的雜湊值是唯一的,從而使攻擊或危害用戶帳戶變得更加困難。
驗證:
要正確驗證雜湊密碼,原始密碼未散列的密碼和儲存的雜湊($dbpassword)應用作password_verify()的輸入。該函數負責將未散列的密碼與散列的版本進行比較,以驗證它們是否匹配。
安全增強:
要進一步增強安全性,請考慮增加散列成本作為參數傳遞給password_hash()。較高的成本(例如下面範例中的 15)會導致雜湊演算法的迭代次數增多,從而使其計算量更加密集,並增強對暴力攻擊的抵抗力。
<code class="php">$password = password_hash($password4, PASSWORD_DEFAULT, ['cost' => 15]);</code>
以上是為什麼 PHP 中的密碼雜湊值不同以及如何驗證它們?的詳細內容。更多資訊請關注PHP中文網其他相關文章!