Rails 4加密Cookie重播攻击
我最近升级到Rails 4并切换到加密的cookie作为会话存储。 不幸的是,这似乎意味着重放攻击是可能的,即如果用户退出,任何cookie都不会失效,并且可以用于在没有用户/通行证的情况下进行身份validation。 据我所知,这是加密cookie如何工作的一个缺陷(如果我错了请赐教!),所以我的问题是:是否有一个可接受的解决方案来阻止使用加密cookie的重放攻击?
经过一些研究和一些修补,我提出了以下解决方案。
- 当用户登录时,创建一个随机秘密(随机秘密应该具有较低的匹配概率)
- 将这个秘密存储在会话中,即在cookie中,以及服务器端,我正在使用Dalli gem来提供memcachedfunction
- 在请求需要身份validation的页面时,从cookie中读取密码,并确保它存在于服务器端
- 注销时,从缓存中删除机密,因此使用相同cookie的任何后续请求都将失效
只要cookie不能被篡改,那么这应该是安全的。 欢迎任何想法/意见
- 如何从websocket连接握手的头部解码cookie? (ruby)
- RSpec与Cookies – 即使应用程序正常工作(模拟已登录的用户),测试也会失败
- 使用Devise的Rails应用程序使用session_id和remember_user_token之间的区别
- 在Ruby on Rails 4(欧盟立法)中强制禁用cookie,直到用户(重新)接受ToS
- 从模型访问cookie
- Rails:如何在多个子域之间共享永久性cookie?
- Rspec错误:Sign_in方法模型中#<RSpec的未定义局部变量或方法`cookies'
- 如何从ApplicationController(Rails)访问cookie
- Rails + Cucumber / Capybara:如何在测试中设置/检索cookie?