Предотвращение доступа вкладки «Восстановление» к хранилищу сеансов

sessionStorage отлично подходит для простого и быстрого сохранения данных, связанных с сеансом, на протяжении всего сеанса веб-страницы. Однако, когда вкладка браузера закрыта, но затем повторно открыта кем-либо, имеющим доступ к разделу «Последние вкладки» браузера, они могут снова получить доступ к данным сеанса.

Есть ли способ пометить некоторые данные хранилища сеанса как «не сохраняемые при восстановлении вкладки» или мне следует попробовать что-то еще? Например, будет ли сеансовый файл cookie работать более безопасно в этом случае?


person basicallydan    schedule 21.07.2014    source источник
comment
Вы должны завершить сеанс в разумные сроки, поскольку сервер не может знать, был ли отправлен файл cookie из активного сеанса браузера или восстановленного.   -  person Gumbo    schedule 22.07.2014
comment
Вы спрашиваете о случае, когда пользователь полностью закрывает свой браузер и запускает его снова позже, а браузер запоминает открытые вкладки? Или случай, когда пользователь нажимает X на вкладке, затем говорит «упс» и восстанавливает ее из меню недавно закрытых вкладок?   -  person Wyzard    schedule 22.07.2014
comment
@Gumbo: На самом деле сервер вообще не должен получать cookie. Боюсь, это требование безопасности, пользователь должен быть уверен, что определенные личные данные не будут переданы по сети.   -  person basicallydan    schedule 22.07.2014
comment
@Wyzard: случай, когда пользователь нажимает X на вкладке, а затем говорит «упс». Я знаю, что это может звучать так, как будто я причиняю вред пользователю, но также возможно, что пользователь не скажет «упс», но кто-то другой, использующий окно браузера позже, посмотрит.   -  person basicallydan    schedule 22.07.2014
comment
Вы не можете контролировать браузер в отношении того, как он обрабатывает файлы cookie сеанса, например. g., решает ли он сохранить файл cookie сеанса по истечении срока его действия (например, он восстанавливает его после завершения работы). Научите своих пользователей отключать такие функции или использовать режим инкогнито.   -  person Gumbo    schedule 22.07.2014
comment
Привет @basicallydan, у меня такая же проблема. У вас есть какое-нибудь решение для этого?   -  person Issaki    schedule 24.06.2019


Ответы (1)


Используйте сеансовые файлы cookie. Если вы не установите атрибуты Expires или Max-Age, браузер получит указание удалить файл cookie после закрытия браузера. Однако это работает только после закрытия всего окна браузера.

Файлы cookie распространяются на весь браузер, а не на отдельные вкладки. Если браузер был закрыт, а затем вкладка восстановлена ​​из истории, файл cookie сеанса исчезнет. Если вкладка закрыта и повторно открыта, когда браузер не закрыт, ваш файл cookie сеанса будет сохраняться.

Обновление: функции "Восстановление сеанса" в Firefox и "Продолжить с того места, на котором я остановился" в Chrome в значительной степени игнорируют спецификацию (RFC-2109). Имейте это в виду и используйте на свой страх и риск.

person Aurand    schedule 22.07.2014
comment
Спасибо за ответ, Ауранд. Итак, это в значительной степени проблема, которую я пытаюсь решить. Мне нужно, чтобы информация исчезала, как только вкладка закрывалась, но сохранялась при обновлении страницы. Знаете ли вы о встроенной функции, которую я могу использовать для этого? - person basicallydan; 22.07.2014
comment
Я опаздываю на вечеринку здесь, но, поскольку я столкнулся с этой самой проблемой, я могу подтвердить, что Firefox и Chrome действительно восстанавливают файлы cookie (даже безопасные, начиная с FF4), когда используется функциональность сеанса восстановления, даже если браузер был закрыт. Это делает этот ответ довольно неправильным в наши дни (хотя я думаю, что он был правильным, когда он был опубликован). Источник: developer.mozilla.org/en-US/docs/ Интернет/HTTP/ - person sensei; 31.08.2017
comment
@sensei Да, сеанс восстановления FF и продолжение Chrome с того места, где я остановился, являются довольно вопиющими нарушениями RFC-2109, который определяет ожидаемое поведение. Я обновил свой ответ с этим предупреждением. - person Aurand; 01.09.2017