Railsy (metoda set_no_cache) Nie można wyłączyć buforowania przeglądarki w Safari i Operze
Po użyciu Devise do mojego uwierzytelnienia odkryłem, że istniała luka w zabezpieczeniach polegająca na tym, że po wylogowaniu użytkownika zmienne sesji są zachowywane. Dzięki temu każdy może nacisnąć przycisk Wstecz i uzyskać dostęp do poprzedniego ekranu zalogowanego użytkownika.
Spojrzałem na te postyNum 1 Num 2 Num 3
Dodałem te linie do mojego kontrolera aplikacji
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
W _form.html.erb dodałem to na górze
<%if user_signed_in? %>
<%=link_to "Sign Out", destroy_user_session_path, :method => :delete %><br/>
<%= form_for(@listing) do |f| %>
<% if @listing.errors.any? %>
...........
Następnie przetestowałem aplikację na Firefox, Chrome i Safari.
Firefox i Chrome były w porządku, ponieważ wylogowałem się i nacisnąłem przycisk Wstecz i nie mogłem zobaczyć poprzedniego ekranu użytkownika, jednak w Safari i Operze niezabezpieczone zachowanie się utrzymuje. Ten kod nie działa.
Jakieś propozycje jak to naprawić?
Dzięki