Fro*_*y Z 6 php cookies hash bcrypt remember-me
我正在尝试按照此处提供的指南实现" 记住我 "功能:基于表单的网站身份验证的权威指南,此处:http://fishbowl.pastiche.org/2004/01/19/persistent_login_cookie_best_practice/
看来,"cookie令牌"应该在存储在数据库中时进行哈希处理(如果攻击者可以访问数据库,则未使用的令牌看起来像普通的登录/密码,允许登录网站).
寻找一个好的哈希算法,我发现这个推荐的技术使用bcrypt:https://stackoverflow.com/a/6337021/488666
我已经尝试过,发现随着建议的轮数(15)导致处理时间非常慢(在2,3或者英特尔2核E500 + 4 GB RAM上验证2,3s)
我知道哈希算法应该相对缓慢阻碍攻击者,但在这个层面上,它阻碍了用户使用网站:)
你认为减少轮数(例如7,将处理时间减少到10ms + 10ms)就足够了吗?
Fro*_*y Z 14
不要在您的数据库中存储持久的登录COOKIE(令牌),只需要它的哈希!登录令牌是密码等效,因此如果攻击者抓住您的数据库,他可以使用令牌登录任何帐户,就像他们是明文登录密码组合一样.因此,在存储持久登录令牌时使用强盐水散列(bcrypt/phpass).
我同意第一个粗体句,但不是最后一个.
如果我没有弄错的话,"强盐水哈希"算法的目的是有人不应该在给出彩虹表的情况下检索密码.
但是在这里,散列字符串不是密码而是随机字符串.因此,任何彩虹表都不可能检索任何原始散列的字符串.我甚至猜测我只能使用一个基本hash('sha256', $randomString)调用,目标是在数据库和cookie中为令牌设置不同的值.