web-dev-qa-db-fra.com

Cookies de session Firefox

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 appropriée 3.0.9) ne semble pas suivre cette règle, d'après ce que je peux dire, il n'expire pas les cookies 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 cookies de session, alors qu'ils durent indéfiniment?

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

103
meandmycode

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

Firefox a une fonctionnalité où vous fermez Firefox et il propose d'enregistrer tous vos onglets, puis vous restaurez le navigateur et ces onglets reviennent. C'est ce qu'on 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 est tombé en panne, vous revenez directement à l'endroit où vous étiez, mais c'est un peu déconcertant pour les développeurs Web habitués à la suppression des 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.

111
bhollis

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/668 ) pour déboguer!
5
Tomap

Cela devrait fonctionner. J'ai l'habitude d'être l'un des testeurs de modules de cookies, et je ne pense pas qu'il y ait une raison de conception qui se comporterait différemment (bien que si vous vous plantez, les cookies de session pourrait être conçus pour vivre lorsque vous redémarrer...)

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

Avez-vous également essayé un nouveau profil?

3
benc

C'est un peu une préoccupation dans les environnements d'utilisateurs partagés. Si j'ai défini un cookie d'authentification qui expirera à la fin de la session. Cela persistera dans Firefox une fois le navigateur fermé et un autre utilisateur démarrera Firefox. Les cookies sont définis avec une date d'expiration pour une raison!

1
Jason

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 maintienne 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.

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

1
Neill Robbins

Je suis stupéfait que Mozilla ait laissé cela tel qu'il est depuis plusieurs années.

OK .. donc j'ai quitté FF et éteint le PC. Le jour suivant, FF démarre et ouvre le dernier ensemble de pages (fonctionnalité pratique) MAIS il restaure les sessions et je suis reconnecté à des sites qui n'ont pas de fonctionnalité "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 les sessions avec cookie ini sont définies 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 quelques 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 elle ne devrait pas être nécessaire.

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

0
anoldermark