Cookies de session Firefox

105

De manière générale, lorsqu'ils reçoivent un cookie qui n'a pas de période d'expiration, les navigateurs modernes considéreront ce cookie comme un `` cookie de session '', ils supprimeront le cookie à la fin de la session de navigation (généralement lorsque l'instance du navigateur se ferme).

IE, Opera, Safari et Chrome prennent tous en charge ce comportement.

Cependant, Firefox (dernière version 3.0.9) semble ne pas suivre cette règle, d'après ce que je peux dire, les cookies n'expirent pas lorsque le navigateur est fermé, ou lorsque l'utilisateur se déconnecte ou redémarre le système d'exploitation.

Alors, pourquoi Firefox les appelle-t-il des cookies de session, alors qu'ils durent indéfiniment?

Quelqu'un sait-il comment Firefox gère l'expiration des cookies de session?

meandmycode
la source
1
Je ne pense pas que cela ait été répondu. Je vois cela aussi.
bhollis le
Merci BRH pour votre recherche, j'ai effectivement vu votre réponse et je voulais vérifier votre recherche avant de marquer votre réponse à la place, complètement oubliée! excuses
Meandmycode

Réponses:

116

C'est apparemment par conception. Découvrez ce bug de Bugzilla: https://bugzilla.mozilla.org/show_bug.cgi?id=443354

Firefox a une fonctionnalité où vous fermez Firefox et il propose de sauvegarder tous vos onglets, puis vous restaurez le navigateur et ces onglets reviennent. Cela s'appelle la restauration de session. Ce que je ne savais pas, c'est que cela restaurera également tous les cookies de session pour ces pages! Il le traite comme si vous n'aviez jamais fermé le navigateur.

Cela a du sens dans le sens où si votre navigateur tombe en panne, vous revenez à l'endroit où vous étiez, mais c'est un peu déconcertant pour les développeurs Web habitués à effacer les cookies de session. J'ai d'anciens cookies de session d'il y a des mois qui ont été définis par des sites que j'ai toujours ouverts dans des onglets.

Pour tester cela, fermez tous les onglets de votre navigateur, puis fermez le navigateur et redémarrez-le. Je pense que les cookies de session de votre site devraient s'effacer dans ce cas. Sinon, vous devrez désactiver la restauration de session.

bhollis
la source
1
Je trouve ce comportement assez discutable, merci pour vos recherches. Si "Enregistrer et quitter" est sélectionné ou "Restaurer les onglets et les fenêtres", à la fermeture du navigateur, tous les cookies de session restent intacts. Le seul moyen pour «l'utilisateur» de s'en débarrasser est de fermer d'abord le (s) onglet (s) puis de fermer le navigateur.
marque
Avez-vous déjà trouvé une solution de contournement? Je ne veux vraiment pas que Firefox déterre les anciennes sessions car j'ai besoin que l'identifiant de session dans mon application soit unique.
ArjanP
Désolé, je ne connais pas de solution de contournement. Du point de vue de votre application, leur navigateur ne s'est jamais fermé.
bhollis
6
J'ai noté certaines des implications de cette décision (mal avisée de l'OMI): mrclay.org/index.php/2010/05/02/…
Steve Clay
J'ai aussi été mordu par ce comportement aujourd'hui. Je pensais qu'il y avait un problème avec mon application. Ensuite, j'ai testé Chrome et d'autres navigateurs, puis j'ai compris que Firefox était le coupable.
Dingle
5

Deux idées:

  1. Vous avez un problème avec votre gestionnaire de session (celui inclus dans FF3 ou celui inclus dans une extension, comme tabmixplus)
  2. Utilisez Firebug + FireCookie ( https://addons.mozilla.org/en-US/firefox/addon/6683 ) pour déboguer!
Tomap
la source
3

Cela devrait fonctionner. J'étais l'un des testeurs de modules de cookies, et je ne pense pas qu'il y ait de raison de conception que cela se comporte différemment (bien que si vous vous plantez, les cookies de session pourraient être conçus pour vivre lorsque vous redémarrez ...)

Consultez-vous les cookies dans le menu "Préférences"> Onglet "Confidentialité"> bouton "Afficher les cookies ..."?

De plus, avez-vous essayé un nouveau profil?

benc
la source
Très étrange, je suis relativement content s'il ne s'agit que d'un bug avec les deux systèmes sur lesquels je l'ai testé .. J'ai vu les cookies et ils survivent à tout .. et ils sont absolument classés comme cookies de session par Firefox .. le les seules options que j'ai jamais modifiées dans Firefox sont d'activer et de désactiver javascript .. mes plugins installés sont firebug et la barre d'outils des développeurs Web .. ah bien- bravo quand même.
Meandmycode
Il existe également une variété de préférences de module de cookies, mais je ne me souviens d'aucune d'entre elles ayant ce type de fonctionnalité. FF3 est passé d'un fichier texte à une base de données de cookies, peut-être que votre base de données s'est mal comportée.
benc
2

Je ne suis pas d'accord avec meandmycode ci-dessus.

La spécification HTTP https://www.ietf.org/rfc/rfc6265.txt parle de ce qu'un client doit faire avec les en-têtes Set-Cookie avec Expires:

Si le serveur souhaite que l'agent utilisateur conserve le cookie sur plusieurs "sessions" (par exemple, l'agent utilisateur redémarre), le serveur peut spécifier une date d'expiration dans l'attribut Expires. Notez que l'agent utilisateur peut supprimer le cookie avant la date d'expiration si le magasin de cookies de l'agent utilisateur dépasse son quota ou si l'utilisateur supprime manuellement le cookie du serveur.

L'extension logique de ceci est que la SEULE façon dont le serveur doit exiger que le navigateur ne conserve pas de cookie à la sortie est de ne définir aucune valeur Expires (c'est-à-dire un cookie de session). Si un navigateur n'honore pas cette sémantique, il n'honore pas la réponse du serveur.

Essentiellement, l'agent utilisateur décide d'ignorer la demande du serveur et d'agir comme si une valeur Expires avait été définie.

Neill Robbins
la source
1

C'est un peu un problème dans les environnements d'utilisateurs partagés. Si je configure un cookie d'authentification qui expire à la fin de la session. Cela persistera dans Firefox après la fermeture du navigateur et le démarrage de Firefox par un autre utilisateur. Les cookies sont définis avec une date d'expiration pour une raison!

Jason
la source
1
Eh bien, pour être juste en ce qui concerne "les cookies sont définis avec une date d'expiration pour une raison" - dans ce scénario, vous ne définissez pas de date d'expiration, c'est donc au navigateur de décider de la durée de ce cookie.
Meandmycode
0

Je suis déconcerté que Mozilla ait laissé cela tel quel pendant plusieurs années.

OK .. alors je quitte FF et éteins le PC. Le jour suivant, FF démarre et ouvre le dernier ensemble de pages (fonctionnalité très pratique) MAIS il restaure les sessions et je suis reconnecté à des sites qui n'ont pas de fonction "enregistrer mes paramètres". Je sais parce que ce sont des sites que j'ai construits. Quoi que je fasse avec les paramètres php ini, les sessions sont restaurées.

Ils ne doivent absolument pas être restaurés. Pages oui, mais sessions avec cookie ini défini sur '0' non.

Je ne comprends pas pourquoi cela n'est pas signalé comme une faille de sécurité. Bien sûr, je peux faire des vérifications supplémentaires côté serveur, pour voir si une connexion doit être autorisée, en fonction de l'heure de la dernière connexion, mais cela ne devrait pas être nécessaire.

Une session ne doit PAS persister. FF manipule les paramètres d'expiration des cookies.

anoldermark
la source
-1

Eh bien, c'est déconcertant pour moi. Mon système est configuré pour que les utilisateurs puissent appuyer sur EXIT, ce qui détruit tous les cookies de session. Mais si un utilisateur ferme le navigateur sans réellement choisir de quitter, j'aimerais que les cookies de session soient effacés.

Je l'ai testé avec Google Chrome, IE 9 et fonctionne très bien. Mais Firefox est réticent à tuer ces cookies de "session" (comme le rapporte Firebug).

D'ACCORD. C'est ce que j'ai fait. J'ai choisi Quitter le menu principal de FireFox et à partir de là, je l'ai bien fait comme prévu (je ne sais pas pourquoi).

jdisla
la source