使用 PHP 解密加密密碼
許多應用程式使用密碼雜湊等加密演算法安全地儲存使用者密碼。然而,在驗證登入嘗試時,將輸入密碼與加密的儲存版本進行比較非常重要。
加密問題
password_hash 採用 Bcrypt,一元加密演算法方式雜湊演算法,表示加密的密碼無法逆轉或解密。這是一項安全功能,可確保即使資料庫遭到破壞,攻擊者也無法存取純文字密碼。
解決方案:密碼驗證
驗證使用者密碼,使用password_verify函數:
<code class="php">if (password_verify('input_password', $encrypted_password)) { // Password matches! } else { // Invalid password. }</code>
此函數將輸入密碼與加密版本進行比較,如果匹配則傳回true。
修改您的SQL查詢
不要在SQL 查詢中包含輸入密碼,而是使用參數化:
<code class="php">$sql_script = 'SELECT * FROM USERS WHERE username=?';</code>
這可以防止惡意使用者操縱您的查詢,從而防止SQL 注入攻擊。
範例
這是使用password_verify的範例:
<code class="php">$username = $_POST['username']; $input_password = $_POST['password']; $sql_script = 'SELECT * FROM USERS WHERE username=?'; if ($result = $conn->query($sql_script, $username)) { if ($user = $result->fetch_assoc()) { if (password_verify($input_password, $user['password'])) { // Login successful! } else { // Invalid password. } } else { // User not found. } }</code>
以上是如何使用PHP的password_verify函數安全地驗證使用者密碼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!