我不确定是否应该在安全性或/ stackoverflow上发布此内容,因为我担心安全性和性能。
我正在努力寻找可靠的Cookie管理来源。我读过OWASP,所以我大致知道什么是危险的。
但我需要使用Cookie验证我的用户身份。是否有完整的分步指南?
我做了什么:
生成随机且唯一的字符串。
将随机字符串与我的缓存rndstring中的用户相关联 - >用户
创建安全且已签名的Cookie。 value = hash(rndstring + secret)| rndstring
如果用户回来,我会检查哈希值是否匹配,以及rndstring是否在我的缓存中。
如果是,请获取用户。
我认为我的方法存在缺陷,因为我自己做了。
另一个问题是我在缓存中从db中保护用户对象。如果用户更新了他的个人资料,我还必须更新缓存。
我正在使用带有play2 framework + mongoDB的java。
你能推荐我什么资源?
答案 0 :(得分:2)
我认为这是Security StackExchange的问题,我注意到你在那里提出了类似的问题,最近有excellent answer from DW。 security.stackexchange.com论坛上有很多人会批评你的方法论。
我个人不建议开发自己的会话管理,事实上我建议反对它。许多人都对“游戏框架”会话管理进行了审核,而你的却没有并且很容易出现你错过的漏洞。我会使用您选择的编程框架提供的内置会话管理。您是否阅读过游戏documentation?
在资源方面,您应该查看David Rook的安全发展原则 - here和here。
如果您使用Cookie改变主意,可以查看web keys,,这是一种将不可授权的令牌插入网址的方法。
阅读Owasp时,您是否阅读了最新的Session Management cheatsheet?我认为你的很多问题都得到了回答。
最后一个资源是SANS Top 25 Software Errors。
答案 1 :(得分:1)
我建议您每次检查哈希值并匹配时,还会生成一个新的唯一字符串并更新您的cookie值。这将提高系统的安全性。因为在盗窃cookie的情况下黑客攻击的可能性会降低。