【发布时间】:2015-09-01 08:40:34
【问题描述】:
我正在使用 crypt 函数将用户密码存储在数据库中。 原来的密码是自己加密的,和数据库里的密码核对一下(我知道这不是很好的做法,但目前的情况就是这样)。
问题是:
crypt('qixin26428968123', 'qixin26428968123') === crypt('qixin26428968', 'qixin26428968')
所以看起来如果例如密码是 123456 并且用户尝试使用 123456abcde 登录,则登录会成功,这意味着用户始终可以使用任意选择的密码登录系统,只要您的第一个“n”位是正确的。
这是一个已知问题吗?怎么解决,有没有指定crypt函数的选项?
谢谢。
【问题讨论】:
-
您使用的是什么版本的 PHP?如果大于 5.0,请尝试使用推荐的 password_hash
-
@RiggsFolly,感谢您的评论。我使用的是 5.5,所以对于 password_hash 应该没问题。此外,如果与 crypt 兼容,我不需要更改我拥有的密码结构。