Как очистить кеш браузера после выхода пользователя из системы, чтобы предотвратить доступ к личной информации через кнопку «Назад» - PullRequest
13 голосов
/ 08 ноября 2010

После того, как пользователь вышел из системы, если он нажал кнопку «Назад», он может вернуться к последней странице, на которой он находился, перед тем как выйти из системы.

Приложение, над которым я работаю, часто будет использоваться на общедоступном компьютере (например, в библиотеке или компьютерной лаборатории), и я бы хотел, чтобы пользователи не могли видеть что-либо из предыдущих сеансов пользователя.

Между прочим, я на Rails 3 и Devise, хотя кажется, что эта проблема возникнет при использовании любого фреймворка или механизма входа в систему.

Является ли решение использовать заголовки / метатеги для отключения кэширования в браузере? Кто-нибудь знает гем или учебник, посвященный этой проблеме?

С нетерпением ждем вашего совета.

Ответы [ 3 ]

6 голосов
/ 05 июня 2014

Используйте приведенный ниже код в контроллере приложения .. это работает для меня. Надеюсь, что это поможет вам. Спасибо !!

код

before_filter :set_cache_buster

def set_cache_buster
   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
4 голосов
/ 06 декабря 2010

Находясь на Rails, вы можете легко настроить все, что находится в папке public, с агрессивным кешем и выбрать то, что еще можно безопасно кэшировать, например, общедоступную страницу «о».

Вы должны установить Cache-Control: no-cache, чтобы запретить браузеру кэшировать HTML-страницы, XML, JSON, содержащие конфиденциальную информацию (в основном все, что доступно только при правильном входе в систему) и установить более агрессивный кеш для статических ресурсов, таких как css и изображения.

  • Хорошими кандидатами для агрессивного кэширования являются CSS и изображения, используемые в вашем приложении и на общедоступных страницах.
  • Хорошие кандидаты на отсутствие кэширования - это все, что доступно после входа в систему (т. Е. Если вы храните изображения, которые должны быть доступны только владельцу tis, их не следует кэшировать, если у вас есть запрос Ajax для прошедших проверку пользователей, что XML не должен кэшироваться).
3 голосов
/ 09 ноября 2010

Да, вы должны использовать заголовки http, чтобы указать браузеру не кэшировать страницу. Эта страница () от OWASP содержит информацию о том, как это сделать.

В соответствии с приведенной выше статьей вы можете установить следующий заголовок, чтобы браузер не кэшировал страницу:

HTTP/1.1:
Cache-Control: no-cache

или

HTTP/1.0:
Pragma: no-cache
Expires: <past date or illegal value (e.g., 0)>

Надеюсь, это поможет.

...