самый простой способ запретить отображать защищенные данные на кнопке «Назад» в вашем браузере после выхода пользователя из системы? - PullRequest
12 голосов
/ 17 октября 2008

В обычном веб-приложении с входом в систему и защитой данных, как легко защитить эти данные и предотвратить их просмотр с помощью кнопки «Назад» браузера, когда пользователь выходит из системы?

Ответы [ 6 ]

5 голосов
/ 17 октября 2008

Вот полезное руководство по кешированию браузера .

Вы хотите установить заголовки контроля кэша и даты истечения срока действия (установка даты в прошлом), например,

 Cache-Control: no-cache
 Expires: Fri, 31 Dec 1998 12:00:00 GMT
3 голосов
/ 17 октября 2008

Идеального решения не существует

Хотя есть несколько очень разумных решений для этого (заголовки управления кэшем, javascript и т. Д.), Вы должны понимать, что после того, как вы отправили что-то клиенту, это не под вашим контролем. Вы не можете гарантировать , что клиент будет обрабатывать данные так, как вы хотите .

Например:

  • в браузере может быть ошибка
  • браузер может разрешить пользователям отключать управление кешем
  • пользователь может работать с отключенным JavaScript

Извините: (

2 голосов
/ 17 октября 2008

Заголовки элементов управления кэшем (Expires, Cache-Control, ETag) обычно предотвращают кэширование страницы, заставляя браузер запрашивать новую копию, после чего вы можете проверить состояние сеанса. Однако иногда они игнорируются в интересах «производительности».

Существует два подхода Javascript, которые могут вам помочь:

  • Используйте событие выхода со своей страницы (onSubmit для форм или onUnload для других страниц), чтобы очистить содержимое при выходе из страниц.
  • Используйте document.location.replace () вместо обычных ссылок при перемещении между страницами, чтобы не оставить след в истории браузера, к которому пользователь мог вернуться.

Оба из них, вероятно, будут иметь довольно ужасный эффект на удобство использования.

1 голос
/ 30 января 2009

Я пробовал этот код VB.NET в IE и Firefox.

Response.Cache.SetAllowResponseInBrowserHistory (False) Response.Cache.SetCacheability (HttpCacheability.NoCache) Response.Cache.SetNoStore () Response.Expires = 0

Это делает свое дело, но я согласен с другими ответами, где вы не можете гарантировать, что будет вести себя браузер клиента.

1 голос
/ 17 октября 2008

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

0 голосов
/ 17 октября 2008

Зависит от вашего решения для входа в систему (SSO - Windows Live / OpenID против доморощенного, где хранятся данные для входа и т. Д.) ... Поскольку «назад» обычно не запрашивает страницу снова, я бы предложил очистить формы JavaScript (OnLoad). На стороне сервера вы можете заполнить их (Page_Load). Очистите сеанс и состояние просмотра при выходе из системы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...