首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >散列“记住我”曲奇标记的最佳方法

散列“记住我”曲奇标记的最佳方法
EN

Stack Overflow用户
提问于 2011-12-14 10:31:11
回答 1查看 9.6K关注 0票数 6

我正在尝试实现一个“ me”特性,遵循这里提供的指导方针:The definitive guide to form-based website authentication和这里:http://fishbowl.pastiche.org/2004/01/19/persistent_login_cookie_best_practice/

看起来,当存储在DB中时,应该对"cookie令牌“进行散列(如果攻击者能够访问DB,那么未散列的令牌看起来就像普通的登录/密码,允许登录网站)。

为了寻找一个好的散列算法,我发现了使用bcrypthttps://stackoverflow.com/a/6337021/488666的推荐技术

我试过了,发现随着建议的回合数(15)导致处理时间非常慢(散列2,3s +在Intel 2双E8500 +4GB内存上验证2,3s )

我知道哈希算法在阻止攻击者方面应该比较慢,但在这个级别上,它会妨碍用户使用该网站:)

你认为较少的回合(例如7次,将处理时间减少到10 to +10 to)就足够了吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-14 16:42:58

引用The definitive guide to form-based website authentication

不将持久化登录COOKIE (令牌)存储在数据库中,只有IT的一个哈希!登录令牌与密码等效,因此如果攻击者掌握了您的数据库,他可以使用这些令牌登录到任何帐户,就好像它们是明文登录密码组合一样。因此,在存储持久性登录令牌时使用强咸散列(bcrypt / phpass)。

我同意第一个粗体的句子,但不同意最后一个。

如果我没有弄错的话,“强咸散列”算法的目的是某人不应该能够在彩虹表中检索。

但是在这里,哈希字符串不是密码,而是随机字符串。因此,任何彩虹表都不太可能检索到任何原始散列字符串。我甚至猜测,我只需使用一个基本的hash('sha256', $randomString)调用就可以了,目标是在DB和cookie中对令牌有不同的值。

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8502972

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档