認証にDeviseを使用した後、ユーザーがログアウトした後、セッション変数が保持されるというセキュリティホールがあることがわかりました。これにより、誰でも戻るボタンを押して、ログインしているユーザーの前の画面にアクセスできます。
これらの行をapplication_controllerに追加しました
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では、安全でない動作が続いています。このコードは効果がありません。
これを修正する方法について何か提案はありますか?
ありがとう