Rails 4加密Cookie重播攻击

时间:2013-08-20 14:06:29

标签: ruby-on-rails cookies session-cookies

我最近升级到Rails 4并切换到加密的cookie作为会话存储。不幸的是,这似乎意味着重放攻击是可能的,即如果用户退出,任何cookie都不会失效,并且可以用于在没有用户/通行证的情况下进行身份验证。据我所知,这是加密cookie如何工作的一个缺陷(如果我错了请赐教!),所以我的问题是:是否有一个可接受的解决方案来阻止使用加密cookie的重放攻击?

1 个答案:

答案 0 :(得分:0)

经过一些研究和一些修补,我提出了以下解决方案。

  • 当用户登录时,创建一个随机秘密(随机秘密应该具有较低的匹配概率)
  • 将该秘密存储在会话中,即在cookie中,以及服务器端,我使用Dalli gem来提供memcached功能
  • 在对需要身份验证的页面的请求中,从cookie中读取秘密,并确保它存在于服务器端
  • 注销时,从缓存中删除机密,因此使用相同cookie的任何后续请求都将失效

只要cookie不能被篡改,那么这应该是安全的。欢迎任何想法/意见