使用 PHP 解密加密密碼
許多應用程式使用密碼雜湊等加密演算法安全地儲存使用者密碼。然而,在驗證登入嘗試時,將輸入密碼與加密的儲存版本進行比較非常重要。
加密問題
password_hash 使用 Bcrypt,一元加密演算法方式雜湊演算法,表示加密的密碼無法逆轉或解密。這是一項安全功能,可確保即使資料庫遭到破壞,攻擊者也無法存取純文字密碼。
解決方案:密碼驗證
驗證使用者密碼,使用password_verify函數:
if (password_verify('input_password', $encrypted_password)) {
// Password matches!
} else {
// Invalid password.
}
此函數將輸入密碼與加密版本進行比較,如果匹配則傳回 true。
修改您的SQL 查詢
而不是包含在SQL 查詢中輸入密碼,使用參數化:
$sql_script = 'SELECT * FROM USERS WHERE username=?';
這樣可以防止惡意使用者進行SQL 注入攻擊操作您的查詢。
範例
這是使用password_verify的範例:
$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.
}
}
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3