【发布时间】:2010-12-03 14:40:46
【问题描述】:
阅读了this article 和其他许多关于如何不在数据库和 cookie 中存储密码的文章,我现在想知道 如何我应该这样做.. .
到目前为止,我想出的是(在阅读了一下之后)获取明文用户密码,用盐填充它直到它填满 512 位(64 字节 => 64 字符,因为页面不是-unicode),然后做
$pwhash = hash('sha512', $saltedpw);
for ($i=0; $i<1000; $i++)
$pwhash = hash('sha512', $pwhash);
然后我将 (UserName, HashedPw, Salt) 存储在数据库中,但是我该如何处理 cookie(以识别希望在会话过期后保持 loogend-on 的用户)?
【问题讨论】:
-
不要将其存储在 cookie 中!这是没有必要的。最好使用随机令牌进行身份验证。
-
那不是很危险吗? (如果随机令牌与另一个令牌发生冲突,则用户将登录到其他人的帐户)
-
@Buttercup:随机令牌仅用于身份验证,不用于识别。但是如果你从足够大的取值范围中选择随机令牌,那么发生冲突的概率就可以忽略不计了。
-
而且,当然,您可以在分配之前检查令牌是否不冲突,如果冲突,则生成另一个随机的。
标签: php mysql database cookies hash