Файлы cookie сеанса Firefox


105

Вообще говоря, при получении файла cookie, у которого нет срока действия, современные браузеры будут рассматривать этот файл cookie как «файл cookie сеанса» и удаляют этот файл cookie в конце сеанса просмотра (обычно при закрытии экземпляра браузера).

IE, Opera, Safari и Chrome поддерживают это поведение.

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

Итак, почему firefox называет их сеансовыми cookie-файлами, если они существуют, по всей видимости, бесконечно?

Кто-нибудь знает, как Firefox обрабатывает истечение срока действия cookie сеанса?


1
Я не думаю, что на это действительно ответили. Я тоже это вижу.
bhollis 04

Спасибо, BRH за ваше исследование, я действительно видел ваш ответ и имел в виду проверить ваше исследование, прежде чем вместо этого отмечать свой ответ, полностью забыл! извинения
meandmycode 02

Ответы:


116

Очевидно, это сделано специально. Проверьте эту ошибку Bugzilla: https://bugzilla.mozilla.org/show_bug.cgi?id=443354

В Firefox есть функция, с помощью которой вы закрываете Firefox, и он предлагает сохранить все ваши вкладки, а затем вы восстанавливаете браузер, и эти вкладки возвращаются. Это называется восстановлением сеанса. Я не понимал, что он также восстановит все файлы cookie сеанса для этих страниц! Он относится к этому так, как будто вы никогда не закрывали браузер.

Это имеет смысл в том смысле, что если ваш браузер выйдет из строя, вы вернетесь туда, где вы были, но это немного сбивает с толку веб-разработчиков, которые использовали для очистки сеансовых файлов cookie. У меня есть старые файлы cookie сеанса, которые были установлены несколько месяцев назад на сайтах, которые я всегда открывал во вкладках.

Чтобы проверить это, закройте все вкладки в браузере, затем закройте браузер и перезапустите его. Я думаю, что в этом случае файлы cookie сеанса для вашего сайта должны быть удалены. В противном случае вам придется отключить восстановление сеанса.


1
Я считаю такое поведение довольно сомнительным, спасибо за ваше исследование. Если выбрано «Сохранить и выйти» или «Восстановить вкладки и окна», после закрытия браузера все файлы cookie сеанса останутся нетронутыми. Единственный способ для «пользователя» избавиться от них - это сначала закрыть вкладку (и), а затем закрыть браузер.
отметка

Вы когда-нибудь находили обходной путь? Я действительно не хочу, чтобы Firefox копал старые сеансы, поскольку мне нужно, чтобы идентификатор сеанса в моем приложении был уникальным.
ArjanP 09

Извините, я не знаю обходного пути. С точки зрения вашего приложения, их браузер никогда не закрывался.
bhollis

6
Я отметил некоторые последствия этого (опрометчивого ИМО) решения: mrclay.org/index.php/2010/05/02/…
Стив Клей

Меня сегодня тоже укусило такое поведение. Я думал, что с моим приложением что-то не так. Затем я протестировал Chrome и другие браузеры, а затем понял, что виноват firefox.
Дингл


3

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

Вы просматриваете файлы cookie в меню «Настройки»> вкладка «Конфиденциальность»> кнопка «Показать файлы cookie ...»?

Кроме того, вы пробовали новый профиль?


Очень странно, я относительно счастлив, если это просто ошибка двух систем, на которых я его тестировал ... Я просмотрел файлы cookie, и они выжили во всем ... и они абсолютно классифицируются как файлы cookie сеанса Firefox ... единственные параметры, которые я когда-либо изменяю в firefox, - это включать и выключать javascript .. Мои установленные плагины - это firebug и панель инструментов веб-разработчика ... ну, в любом случае, ура.
meandmycode

Также существует множество настроек модуля cookie, но я не припомню, чтобы ни один из них имел такую ​​функциональность. FF3 переключился с текстового файла на базу данных cookie, возможно, ваша база данных вела себя неправильно.
скамейка запасных, 01

2

Я не согласен со мной и моим кодом выше.

В спецификации HTTP https://www.ietf.org/rfc/rfc6265.txt говорится о том, что клиент должен делать с заголовками Set-Cookie с Expires:

Если сервер желает, чтобы пользовательский агент сохранял cookie в течение нескольких «сеансов» (например, перезапуск пользовательского агента), сервер может указать дату истечения срока действия в атрибуте Expires. Обратите внимание, что пользовательский агент может удалить cookie до истечения срока действия, если хранилище cookie пользовательского агента превышает свою квоту или если пользователь вручную удаляет cookie сервера.

Логическим расширением этого является то, что ЕДИНСТВЕННЫЙ способ, которым сервер должен требовать, чтобы браузер не поддерживал Cookie при выходе, - это установить значение Expires (т.е. cookie сеанса). Если браузер не соблюдает эту семантику, он не учитывает ответ сервера.

По сути, пользовательский агент решает игнорировать запрос сервера и действовать так, как если бы было установлено значение Expires.


1

Это немного беспокоит в общих пользовательских средах. Если я установил файл cookie аутентификации, срок действия которого истекает в конце сеанса. Это будет сохраняться в Firefox после закрытия браузера и запуска Firefox другим пользователем. Для файлов cookie есть определенная дата истечения срока действия!


1
Что ж, чтобы быть справедливым в отношении «куки-файлы устанавливаются с датой истечения срока действия по какой-то причине» - в этом сценарии вы не устанавливаете дату истечения срока действия, поэтому браузер должен решить, как долго этот куки-файл сохраняется.
meandmycode

0

Я смущен тем, что Mozilla оставила это как есть на несколько лет.

ОК ... поэтому я выхожу из FF и выключаю компьютер. На следующий день FF запускается и открывает последний набор страниц (приятная удобная функция), НО он восстанавливает сеансы, и я снова захожу на сайты, на которых нет функции «сохранить мои настройки». Я знаю, потому что это сайты, которые я построил. Что бы я ни делал с настройками php ini, сеансы восстанавливаются.

Их категорически не следует восстанавливать. Страницы да, но сеансы с cookie ini, установленным на «0», нет.

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

Сеанс НЕ должен сохраняться. FF манипулирует настройками срока действия файлов cookie.


-1

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

Я действительно тестировал его с Google Chrome, IE 9, и он отлично работает. Но Firefox неохотно убивает куки этого «сеанса» (как сообщает Firebug).

ХОРОШО. Вот что я сделал. Я выбрал «Выход» из главного меню FireFox, и с тех пор все прошло нормально, как и ожидалось (не знаю почему).

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.