0

而且我需要保护我的网上商店中的某些区域以供管理员使用。问题是用户的身份验证:salt + hash 失败。

这是我创建密码的代码(使用 PHP5.x):

$salt = rand(0, 999999999999);<br>
$passEncr = sha1($pass1 + $salt);

这个变量 $passEncr 连同它的盐一起被插入到数据库中。

在登录页面上,我进行了以下检查:

$password = $_POST['password']; // hash+salt in the database

$storedSalt = $row['salt']; // salt from database<br>
if (sha1($password + $storedSalt) == $row['password']) 

现在我遇到的问题是一些哈希似乎是相同的。如果我尝试使用字母数字密码登录,我会成功,无论该密码的内容是什么。完整登录检查:http: //pastebin.com/WjVnQ4aF

有人可以解释我做错了什么吗?

4

1 回答 1

0

好吧,SQL 注入,使用 SHA 代替 bcrypt 是我看到的第一件事,不使用 OpenId 这样你就可以摆脱存储密码的业务是另一回事。

至于密码是否相同,我会检查数据库——看看你在存储什么,这会告诉你问题出在哪里。

于 2012-07-22T21:46:50.167 回答