Сеансовые куки Firefox

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

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

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

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

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

7 ответов

Решение

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

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

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

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

Две идеи:

  1. У вас проблема с менеджером сеансов (включенным в FF3 или включенным в расширение, например tabmixplus)
  2. Используйте Firebug + FireCookie ( https://addons.mozilla.org/en-US/firefox/addon/6683) для отладки!

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

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

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

Я не согласен с указанным выше кодом.

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

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

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

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

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

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

Они абсолютно не должны быть восстановлены. Страницы да, но сессии с cookie ini, установленным в '0', нет.

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

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

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

В моем случае это было из-за закрепленных вкладок, которые автоматически восстанавливали сеанс, даже если эта опция была отключена в настройках Firefox. Поэтому, если вы открепите вкладки, сеанс не будет восстановлен.

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

Я фактически проверил это с Google Chrome, IE 9, и работает отлично. Но Firefox не хочет уничтожать эти "сессионные" (как сообщает Firebug) куки.

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

Другие вопросы по тегам