Firefox-Sitzungscookies

105

Wenn ein Cookie ohne Ablauffrist verwendet wird, betrachten moderne Browser dieses Cookie im Allgemeinen als "Sitzungscookie" und entfernen das Cookie am Ende der Browsersitzung (im Allgemeinen, wenn die Browserinstanz geschlossen wird).

IE, Opera, Safari und Chrome unterstützen dieses Verhalten.

Firefox (3.0.9 neueste Version) scheint dieser Regel jedoch nicht zu folgen. Soweit ich weiß, verfallen die Cookies nicht, wenn der Browser geschlossen wird oder wenn sich der Benutzer abmeldet oder das Betriebssystem neu startet.

Warum werden diese von Firefox als Sitzungscookies bezeichnet, wenn sie auf unbestimmte Zeit gültig sind?

Weiß jemand, wie Firefox mit dem Ablauf von Sitzungscookies umgeht?

meandmycode
quelle
1
Ich glaube nicht, dass dies tatsächlich beantwortet wurde. Ich sehe das auch.
Bhollis
Vielen Dank, BRH, für Ihre Recherche. Ich habe Ihre Antwort tatsächlich gesehen und wollte Ihre Recherche überprüfen, bevor Sie stattdessen Ihre Antwort markieren. Völlig vergessen! Entschuldigung
meandmycode

Antworten:

116

Dies ist anscheinend beabsichtigt. Schauen Sie sich diesen Bugzilla-Bug an: https://bugzilla.mozilla.org/show_bug.cgi?id=443354

Firefox verfügt über eine Funktion, mit der Sie Firefox schließen und alle Ihre Registerkarten speichern können. Anschließend stellen Sie den Browser wieder her und diese Registerkarten werden wieder angezeigt. Das nennt man Sitzungswiederherstellung. Was ich nicht realisiert habe ist, dass es auch alle Sitzungscookies für diese Seiten wiederherstellt! Es behandelt es so, als hätten Sie den Browser nie geschlossen.

Dies ist insofern sinnvoll, als Sie bei einem Absturz Ihres Browsers wieder dorthin zurückkehren, wo Sie sich gerade befanden. Dies ist jedoch ein wenig beunruhigend für Webentwickler, die zum Löschen von Sitzungscookies verwendet werden. Ich habe einige alte Sitzungscookies von vor Monaten, die von Websites gesetzt wurden, die ich immer in Registerkarten geöffnet habe.

Um dies zu testen, schließen Sie alle Registerkarten in Ihrem Browser, schließen Sie den Browser und starten Sie ihn neu. Ich denke, die Sitzungscookies für Ihre Website sollten in diesem Fall gelöscht werden. Andernfalls müssten Sie die Sitzungswiederherstellung deaktivieren.

Bhollis
quelle
1
Ich finde dieses Verhalten ziemlich fragwürdig, danke für Ihre Recherche. Wenn beim Speichern des Browsers "Speichern und beenden" oder "Registerkarten und Fenster wiederherstellen" ausgewählt ist, bleiben alle Sitzungscookies erhalten. Die einzige Möglichkeit für den "Benutzer", sie zu entfernen, besteht darin, zuerst die Registerkarten und dann den Browser zu schließen.
Markieren Sie den
Haben Sie jemals eine Problemumgehung gefunden? Ich möchte wirklich nicht, dass Firefox alte Sitzungen ausgräbt, da die Sitzungs-ID in meiner App eindeutig sein muss.
ArjanP
Entschuldigung, ich kenne keine Problemumgehung. Aus Sicht Ihrer App wurde der Browser nie geschlossen.
Bhollis
6
Ich habe einige der Auswirkungen dieser (IMO schlecht beratenen) Entscheidung festgestellt
Steve Clay
Dieses Verhalten hat mich auch heute gebissen. Ich dachte, mit meiner App stimmt etwas nicht. Dann habe ich Chrome und andere Browser getestet und dann herausgefunden, dass Firefox der Schuldige ist.
Dingle
5

Zwei Ideen:

  1. Sie haben ein Problem mit Ihrem Sitzungsmanager (der in FF3 enthaltene oder einer in einer Erweiterung wie tabmixplus enthaltene).
  2. Verwenden Sie Firebug + FireCookie ( https://addons.mozilla.org/en-US/firefox/addon/6683 ) zum Debuggen!
Tomap
quelle
3

Das sollte funktionieren. Früher war ich einer der Cookie-Modul-Tester, und ich glaube nicht, dass es einen Designgrund gibt, warum sich dies anders verhält (obwohl die Sitzungscookies bei einem Absturz möglicherweise auftreten so gestaltet sind, dass sie beim Neustart weiterleben ...)

Zeigen Sie die Cookies im Menü "Einstellungen"> Registerkarte "Datenschutz"> "Cookies anzeigen ..." an?

Haben Sie auch ein neues Profil ausprobiert?

benc
quelle
Sehr seltsam, ich bin relativ glücklich, wenn dies nur ein Fehler mit den beiden Systemen ist, auf denen ich es getestet habe. Ich habe die Cookies angesehen und sie überleben alles. Und sie werden von Firefox absolut als Sitzungscookies klassifiziert Die einzige Option, die ich jemals in Firefox geändert habe, ist das Ein- und Ausschalten von Javascript. Meine installierten Plugins sind Firebug und die Webentwickler-Symbolleiste.
Meandmycode
Es gibt auch eine Vielzahl von Einstellungen für Cookie-Module, aber ich kann mich nicht erinnern, dass eine dieser Funktionen diese Art von Funktionalität aufweist. FF3 hat von einer Textdatei zu einer Cookie-Datenbank gewechselt. Möglicherweise hat sich Ihre Datenbank falsch verhalten.
Benc
2

Ich bin mit meandmycode oben nicht einverstanden.

In der HTTP-Spezifikation https://www.ietf.org/rfc/rfc6265.txt wird erläutert, was ein Client mit Set-Cookie-Headern mit Expires tun soll:

Wenn der Server möchte, dass der Benutzeragent das Cookie über mehrere "Sitzungen" hinweg beibehält (z. B. Neustart des Benutzeragenten), kann der Server im Attribut "Ablaufdatum" ein Ablaufdatum angeben. Beachten Sie, dass der Benutzeragent das Cookie möglicherweise vor dem Ablaufdatum löscht, wenn der Cookie-Speicher des Benutzeragenten sein Kontingent überschreitet oder wenn der Benutzer das Cookie des Servers manuell löscht.

Die logische Erweiterung davon ist, dass der Server NUR verlangen muss, dass der Browser beim Beenden kein Cookie verwaltet, indem er keinen Expires-Wert (dh ein Sitzungscookie) festlegt. Wenn ein Browser diese Semantik nicht berücksichtigt, wird die Antwort des Servers nicht berücksichtigt.

Im Wesentlichen beschließt der Benutzeragent, die Serveranforderung zu ignorieren und so zu handeln, als ob ein Expires-Wert festgelegt worden wäre.

Neill Robbins
quelle
1

Dies ist in gemeinsam genutzten Benutzerumgebungen ein Problem. Wenn ich ein Authentifizierungscookie setze, das am Ende der Sitzung abläuft. Dies bleibt in Firefox bestehen, nachdem der Browser geschlossen wurde und ein anderer Benutzer Firefox startet. Cookies werden aus einem bestimmten Grund mit einem Ablaufdatum gesetzt!

Jason
quelle
1
Um fair zu sein in Bezug auf "Cookies werden aus einem bestimmten Grund mit einem Ablaufdatum gesetzt" - in diesem Szenario legen Sie kein Ablaufdatum fest. Es liegt also am Browser, zu entscheiden, wie lange dieses Cookie gültig ist.
Meandmycode
0

Ich bin verblüfft, dass Mozilla dies seit einigen Jahren so belassen hat.

OK .. also beende ich FF und schalte den PC aus. Am nächsten Tag startet FF und öffnet den letzten Satz von Seiten (nette praktische Funktion), ABER es stellt die Sitzungen wieder her und ich bin wieder bei Sites angemeldet, die keine Funktion zum Speichern meiner Einstellungen haben. Ich weiß, weil es Websites sind, die ich erstellt habe. Was auch immer ich mit PHP INI-Einstellungen mache, die Sitzungen werden wiederhergestellt.

Sie sollten unbedingt nicht restauriert werden. Seiten ja, aber Sitzungen mit Cookie ini auf '0' gesetzt nein.

Ich verstehe nicht, warum dies nicht als Sicherheitslücke gekennzeichnet ist. Natürlich kann ich auf der Serverseite einige zusätzliche Überprüfungen durchführen, um festzustellen, ob eine Anmeldung basierend auf der Zeit seit der letzten Anmeldung zulässig sein sollte, aber sie sollte nicht benötigt werden.

Eine Sitzung sollte NICHT bestehen bleiben. FF bearbeitet die Cookie-Ablaufeinstellungen.

anoldermark
quelle
-1

Nun, es ist beunruhigend für mich. Mein System ist so eingerichtet, dass Benutzer auf EXIT klicken können, wodurch alle Sitzungscookies zerstört werden. Wenn ein Benutzer den Browser schließt, ohne tatsächlich zu beenden, möchte ich, dass die Sitzungscookies gelöscht werden.

Ich habe es tatsächlich mit Google Chrome, IE 9, getestet und es funktioniert einwandfrei. Firefox zögert jedoch, diese "Sitzungs" -Cookies (wie von Firebug gemeldet) zu beenden.

OK. Das habe ich getan. Ich habe Exit aus dem FireFox-Hauptmenü gewählt und von da an alles wie erwartet gemacht (weiß nicht warum).

jdisla
quelle