Pliki cookie sesji Firefox

105

Ogólnie rzecz biorąc, jeśli otrzymają plik cookie, który nie ma okresu ważności, nowoczesne przeglądarki uznają ten plik cookie za „plik cookie sesji” i usuwają go na koniec sesji przeglądania (zazwyczaj po zamknięciu wystąpienia przeglądarki).

IE, Opera, Safari i Chrome obsługują to zachowanie.

Jednak Firefox (najnowsza właściwa wersja 3.0.9) wydaje się nie przestrzegać tej reguły, z tego, co wiem, nie wygasa plików cookie po zamknięciu przeglądarki lub po wylogowaniu się lub ponownym uruchomieniu systemu operacyjnego.

Dlaczego więc w programie Firefox są one nazywane plikami cookie sesji, skoro trwają one w nieskończoność?

Czy ktoś wie, jak Firefox obsługuje wygasanie plików cookie sesji?

meandmycode
źródło
1
Nie sądzę, aby faktycznie udzielono odpowiedzi. Ja też to widzę.
bhollis
Dzięki BRH za twoje badania, faktycznie widziałem twoją odpowiedź i zamiast tego chciałem sprawdzić twoje badania przed zaznaczeniem odpowiedzi, zupełnie zapomniałem! przeprosiny
meandmycode

Odpowiedzi:

116

Jest to najwyraźniej zgodne z projektem. Sprawdź ten błąd Bugzilli: https://bugzilla.mozilla.org/show_bug.cgi?id=443354

Firefox ma funkcję zamykania Firefoksa i oferuje zapisanie wszystkich kart, a następnie przywrócenie przeglądarki i przywrócenie tych kart. Nazywa się to przywracaniem sesji. Nie zdawałem sobie sprawy, że przywróci również wszystkie pliki cookie sesji dla tych stron! Traktuje to tak, jakbyś nigdy nie zamknął przeglądarki.

Ma to sens w tym sensie, że jeśli Twoja przeglądarka ulegnie awarii, wrócisz do miejsca, w którym byłeś, ale jest to trochę niepokojące dla twórców stron internetowych przyzwyczajonych do usuwania plików cookie sesji. Mam stare sesyjne pliki cookie sprzed miesięcy, które zostały ustawione przez witryny, które zawsze otwieram w kartach.

Aby to przetestować, zamknij wszystkie karty w przeglądarce, a następnie zamknij przeglądarkę i uruchom ją ponownie. Myślę, że w takim przypadku pliki cookie sesji dla Twojej witryny powinny zostać wyczyszczone. W przeciwnym razie musisz wyłączyć przywracanie sesji.

bhollis
źródło
1
Uważam, że to zachowanie jest dość wątpliwe, dziękuję za badania. W przypadku wybrania opcji „Zapisz i zakończ” lub „Przywróć karty i okna” po zamknięciu przeglądarki wszystkie pliki cookie sesji pozostają nienaruszone. Jedynym sposobem na pozbycie się ich przez „użytkownika” jest zamknięcie kart (y), a następnie zamknięcie przeglądarki.
znak
Czy kiedykolwiek znalazłeś obejście? Naprawdę nie chcę, aby Firefox kopał stare sesje, ponieważ potrzebuję, aby identyfikator sesji w mojej aplikacji był unikalny.
ArjanP
Przepraszam, nie znam rozwiązania zastępczego. Z punktu widzenia Twojej aplikacji ich przeglądarka nigdy nie została zamknięta.
bhollis
6
Zwróciłem
Steve Clay
Dzisiaj też ugryzło mnie to zachowanie. Myślałem, że coś jest nie tak z moją aplikacją. Następnie przetestowałem Chrome i inne przeglądarki, a potem odkryłem, że winowajcą jest Firefox.
Dingle
3

To powinno działać. Kiedyś byłem jednym z testerów modułów cookie i nie sądzę, aby istniał żaden powód, dla którego zachowywałoby się to inaczej (chociaż w przypadku awarii pliki cookie sesji mogą być zaprojektowane tak, aby działały po ponownym uruchomieniu ...)

Czy przeglądasz pliki cookie w menu „Preferencje”> karta „Prywatność”> przycisk „Pokaż pliki cookie ...”?

Czy wypróbowałeś nowy profil?

benc
źródło
Bardzo dziwne, jestem względnie zadowolony, jeśli to tylko błąd w dwóch systemach, na których go przetestowałem. Obejrzałem pliki cookie i one wszystko przetrwają .. i są one absolutnie klasyfikowane jako pliki cookie sesji przez program Firefox. jedynymi opcjami, które kiedykolwiek zmieniłem w firefox, jest wyłączenie i włączenie javascript. Moje zainstalowane wtyczki to firebug i pasek narzędzi programisty WWW ... ah cóż, w każdym razie.
meandmycode
Istnieją również różne preferencje dotyczące modułów cookie, ale nie przypominam sobie, aby którykolwiek z nich miał taką funkcjonalność. FF3 przełączył się z pliku tekstowego na bazę danych cookie, być może Twoja baza danych źle się zachowała.
benc
2

Nie zgadzam się z powyższym meandmycode.

Specyfikacja HTTP https://www.ietf.org/rfc/rfc6265.txt mówi o tym, co klient powinien zrobić z nagłówkami Set-Cookie z Expires:

Jeśli serwer chce, aby agent użytkownika utrwalał plik cookie w wielu „sesjach” (np. Restart agenta użytkownika), może określić datę wygaśnięcia w atrybucie Expires. Należy zauważyć, że klient użytkownika może usunąć plik cookie przed datą wygaśnięcia, jeśli magazyn plików cookie klienta użytkownika przekroczy swój limit lub jeśli użytkownik ręcznie usunie plik cookie serwera.

Logicznym rozszerzeniem tego jest to, że JEDYNYM sposobem, w jaki serwer musi wymagać, aby przeglądarka nie utrzymywała pliku cookie przy wyjściu, jest ustawienie żadnej wartości Expires (tj. Pliku cookie sesji). Jeśli przeglądarka nie przestrzega tej semantyki, nie honoruje odpowiedzi serwera.

Zasadniczo agent użytkownika decyduje się zignorować żądanie serwera i działać tak, jakby ustawiono wartość Expires.

Neill Robbins
źródło
1

Jest to trochę niepokojące we współdzielonych środowiskach użytkowników. Jeśli ustawię plik cookie uwierzytelniania, który wygasa po zakończeniu sesji. To będzie się utrzymywać w Firefoksie po zamknięciu przeglądarki i uruchomieniu go przez innego użytkownika. Pliki cookie mają ustawioną datę ważności nie bez powodu!

Jason
źródło
1
Cóż, żeby być uczciwym, jeśli chodzi o „Pliki cookie mają ustawioną datę wygaśnięcia z jakiegoś powodu” - w tym scenariuszu nie ustawiasz daty wygaśnięcia, więc przeglądarka decyduje, jak długo ten plik cookie będzie trwał.
meandmycode
0

Jestem zbity z tropu, że Mozilla zostawiła to tak, jak jest przez kilka lat.

OK ... więc rzuciłem FF i wyłączam komputer. Następnego dnia FF uruchamia się i otwiera ostatni zestaw stron (fajna przydatna funkcja) ALE przywraca sesje i jestem ponownie zalogowany do witryn, które nie mają funkcji „zapisz moje ustawienia”. Wiem, ponieważ są to witryny, które zbudowałem. Cokolwiek zrobię z ustawieniami php ini, sesje zostaną przywrócone.

Absolutnie nie należy ich przywracać. Strony tak, ale sesje z plikiem cookie ini ustawionym na „0” nie.

Nie rozumiem, dlaczego nie jest to oznaczone jako luka w zabezpieczeniach. Oczywiście, mogę przeprowadzić dodatkowe sprawdzenie po stronie serwera, aby sprawdzić, czy logowanie powinno być dozwolone, na podstawie czasu od ostatniego logowania, ale nie powinno być potrzebne.

Sesja NIE powinna trwać. FF manipuluje ustawieniami wygaśnięcia plików cookie.

anoldermark
źródło
-1

Cóż, jest to dla mnie niepokojące. Mój system jest skonfigurowany tak, że użytkownicy mogą nacisnąć EXIT, po czym niszczę wszystkie sesyjne pliki cookie. Ale jeśli użytkownik zamknie przeglądarkę, nie wybierając wyjścia, chcę wyczyścić pliki cookie sesji.

Właściwie przetestowałem to z Google Chrome, IE 9 i działa dobrze. Jednak Firefox niechętnie zabija te pliki cookie „sesji” (jak donosi Firebug).

DOBRZE. To właśnie zrobiłem. Wybrałem Exit z głównego menu FireFox i od tego momentu robiłem to dobrze zgodnie z oczekiwaniami (nie wiem dlaczego).

jdisla
źródło