1

我将用户密码作为纯文本存储在数据库中。所以很容易更改密码。我用这个代码,

while($row = mysql_fetch_array($result)) {
  if($row['Password']==$opass)
    mysql_query(
      "UPDATE information SET Password='$pass' WHERE Username='$name'"
    );
}

首先,我检查用户是否正确输入了旧密码($opass),然后我允许他将其更改为新密码($pass)。我想我可以检查旧密码,因为我将它存储为纯文本。但是如果我使用任何哈希算法,这段if($row['Password']==$opass)代码怎么能工作?我认为$opass$row['Password']不会一样。

4

1 回答 1

4

只需使用等效的哈希函数对用户输入的密码进行哈希处理,并将其与您存储在数据库中的密码进行比较。

while($row = mysql_fetch_array($result)){
 if($row['Password']==yourOneWayPasswordHashingFunction($opass))
  mysql_query("UPDATE information SET Password='$pass' WHERE Username='$name'");}

正如我在评论中提到的,使用bcrypt. 密码可能很难,所以用这个,然后去购物,圣诞节也可以:)

还...

我将用户密码作为纯文本存储在数据库中。所以很容易更改密码

强调我的。

您永远不应该存储纯文本密码,而且很容易更改不是正当理由。然而,感谢他们认识到需要为此做点什么。

于 2012-12-23T23:29:16.943 回答