我使用sha1加密来加密我的密码,但我遇到了问题。对于某些用户,登录无效。
我的代码,(注册时)
// all validation is done here
$password = sha1($_POST['password']);
// inserting data is here
登录时我的查询是
$email = $_POST['email'];
$password = sha1($_POST['password']);
select * from users where email = $email and password = $password and status = 1 and deleted = 0;
用户面临密码问题之一
IM $$人
我做错了什么。
请帮帮我。
答案 0 :(得分:6)
我使用sha1加密来加密我的密码,
不。 SHA1不是加密,它是一个哈希函数。 Understanding the difference between encrypting and hashing对于安全实施这一点至关重要:
此外,您撰写查询的方式让我相信它容易受到SQL injection的攻击。</ p>
答案 1 :(得分:0)
问题出在这里,
sha1将$man
中的im$$man
视为变量,因此它将被评估为null,因为您没有任何值。
这样的事情,
sha1("im$$man");// will echo 17cf5ec2752a9a7f0077c904f60b64f23ba2534d
也等于
sha1("im$");// will echo 17cf5ec2752a9a7f0077c904f60b64f23ba2534d
$man is evaluated to null.
输入的输出相同(虽然输入不同)
要获得预期结果,请避免使用双引号,
sha1('im$$man');// this will give correct output
输出
850caa44549443778fe005f466766d5d6d413692// correct output.
的类似问题