我遇到这样的情况:
使用Rails 4 + Devise
我注销了用户,在此期间我打开了我的Chrome开发工具并检查了网络中的标题。我感兴趣的是“sign_out”(动作/饼干?我不知道我应该在这里使用的确切名称)。
在它的请求标题中,我得到了一个会话变量“_app_name_session”。
如果我复制此变量并向我的网站的某些部分发出GET请求,要求用户进行身份验证,那么我会得到200 OK响应(尽管我已经注销了!)
我怎么能防止这种情况发生?
我已在我的Warden
模型中尝试了User
回调,如下所示:
Warden::Manager.before_logout do |user, auth, opts|
auth.cookies.delete :_app_name_session
end
和
Warden::Manager.before_logout do |user, auth, opts|
auth.cookies["_app_name_session"] = ""
end
但这不起作用,并且会在Cookie中设置会话变量。
注销后是否可以立即超时?
这确实困扰我,因为虽然会话应该在注销时被清除,但它不是,并且有一种方法(我知道,复杂和攻击者必须通过其他安全层)来劫持用户会话。