我有一个mysql/php hash(sha1)登录问题

0 php passwords hash login

我有一个关于在数据库中使用密码进行密码登录的问题.我的当前脚本只是告诉我"密码错误"消息,即使它正确.

$s = $mysqli->query("SELECT * FROM `users` WHERE email`='".$_POST['email']."'") or die();
$i = $s->fetch_assoc();
if($_POST['password'] == sha1($i['password'])) {
echo "works";
} else {
    echo "bad password";
}
Run Code Online (Sandbox Code Playgroud)

Rig*_*lly 6

你这样做是错误的.数据库密码已经过哈希 我希望但是用户输入一个纯文本密码,所以你需要对用户输入的内容进行哈希,看看它是否与数据库中的哈希相匹配

$s = $mysqli->query("SELECT * FROM `users` WHERE `email`='{$_POST['email']}'") or die();
$i = $s->fetch_assoc();
if(sha1($_POST['password']) == $i['password']) {
    echo "works";
} else {
    echo "bad password";
}
Run Code Online (Sandbox Code Playgroud)

然而

请不要滚动自己的密码哈希.PHP提供password_hash()password_verify()请使用它们,我可能希望有一天使用您的网站这里有一些关于密码的好主意 如果您使用的是5.5之前的PHP版本,那么这里有一个兼容包

你的脚本存在SQL注入攻击的风险 看看Little Bobby Tables发生的事情即使 你正在逃避输入,它也不安全! 使用预准备语句和参数化语句