在尝试使用存储在 MySQL 中的加盐密码实现会员站点时,您可能会遇到以下问题:会员登录页面接受任何输入。本文解决了这个问题,提供了一种基于密码加盐和散列概念的解决方案。
为了增强安全性,密码在存储在数据库。加盐涉及向密码添加随机字符串,而散列将结果转换为安全的单向值。此过程可防止攻击者直接检索实际密码,即使他们获得了数据库的访问权限。
要检索加盐密码,您需要:
获得哈希值后,您可以根据数据库中存储的哈希密码进行验证:
$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); }
在此代码中,如果哈希值匹配,登录成功。否则,会显示错误。
密码验证的另一种方法是使用password_hash()和password_verify()函数:
$hashFromDb = ...; // retrieve the stored password hash $isPasswordCorrect = password_verify($_POST['password'], $hashFromDb);
这些函数自动处理加盐和散列过程,简化密码验证。
以上是如何从数据库中检索加盐密码以进行用户身份验证?的详细内容。更多信息请关注PHP中文网其他相关文章!