Как очистить кеш браузера после выхода из системы, чтобы предотвратить доступ к частной информации с помощью кнопки "Назад"

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

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

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

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

Посмотрите на ваш совет.

Ответ 1

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

код

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

Ответ 2

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

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

  • Хорошими кандидатами на агрессивный кэш являются css и изображения, используемые в вашем приложении и общедоступных страницах.
  • Хорошие кандидаты на отсутствие кеша доступны после входа в систему (т.е. если вы сохраняете изображения, которые должны быть доступны только для этого владельца, его не следует кэшировать, если у вас есть запрос Ajax для пользователей, у которых есть настроенные пользователи, XML не следует кэшировать).

Ответ 3

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

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

HTTP/1.1:
Cache-Control: no-cache

или

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

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