使用 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