使用 Devise 来验证我的认证后, 我发现有一个安全漏洞, 在用户登录退出后, 会话变量会被保存。 这样任何人都可以按下后键并访问用户前一个屏幕中登录的 。
I looked at these posts Num 1 Num 2 Num 3
我把这些线条加到我的应用程序控制器上
before_filter :set_no_cache
def set_no_cache
response.headers["Cache-Control"] = "no-cache, no-store, max-age=0, must-revalidate"
response.headers["Pragma"] = "no-cache"
response.headers["Expires"] = "Fri, 01 Jan 1990 00:00:00 GMT"
end
在_form.html.erb 中,我在顶部添加了这个
<%if user_signed_in? %>
<%=link_to "Sign Out", destroy_user_session_path, :method => :delete %><br/>
<%= form_for(@listing) do |f| %>
<% if @listing.errors.any? %>
...........
然后我测试了Firefox、Chrome和Safari的应用程序。
Firefox和Chrome都很好,因为我登出记录并按下后按钮,无法看到用户先前的屏幕,然而,在Safari和Opera中,不安全行为依然存在。这个代码没有效果。
关于如何解决这个问题,有什么建议吗?
谢谢 谢谢