web-dev-qa-db-fra.com

Pourquoi document.cookie n'affiche pas tous les cookies du site?

Je vais sur un forum qui utilise vBulletin 3.8. Lorsque je me connecte, j'utilise Firebug pour voir quels cookies ont été définis. Je vois ces cookies:

__utmb, __utmc, __utma, __utmz, bbsessionhash, vbseo_loggedin, bbpassword, bbuserid, bblastactivity, bblastvisit

Ils avaient tous un ensemble de valeurs et le domaine était identique.

Mais lorsque j'utilise JavaScript pour les afficher, il n'a vu que ces cookies:

__utmb, __utmc, __utma, __utmz, vbseo_loggedin, bblastactivity, bblastvisit

Dans Firebug, je ne vois que ces trois cookies: bbsessionhash, bbpasword et bbuserid, qui ont été définis. HTTPOnly dans la colonne HTTPOnly. Qu'est-ce que cela signifie et c'est que la raison pour laquelle je ne peux pas voir ces cookies en JavaScript en utilisant document.cookie?

61
kiennt

De http://en.wikipedia.org/wiki/HTTP_cookie :

Les cookies ne sont pas directement visibles par les programmes côté client tels que JavaScript s'ils ont été envoyés avec l'indicateur HttpOnly. Du point de vue du serveur, la seule différence par rapport au cas normal est que la ligne d'en-tête set-cookie est ajoutée un nouveau champ contenant la chaîne `HttpOnly ':

Set-Cookie: RMID=732423sdfs73242; expires=Fri, 31-Dec-2010 23:59:59 GMT; path=/; domain=.example.net; HttpOnly

Lorsque le navigateur reçoit un tel cookie, il est censé l'utiliser comme d'habitude dans les échanges HTTP suivants, mais pas pour le rendre visible aux scripts côté client. L'indicateur HttpOnly ne fait partie d'aucune norme et n'est pas implémenté dans tous les navigateurs.

Mise à jour de 2017: beaucoup de temps s'était écoulé depuis 2009, et l'indicateur d'en-tête HttpOnly est devenu un standard, défini dans le section 5.2.6 du RFC6265 , avec la sémantique de stockage décrite dans le même document (recherchez "http-only-flag" dans tout le texte RFC).

Il n'y a aucun moyen d'accéder à tout ce qui concerne les cookies HttpOnly à partir des API "non HTTP", par ex. JavaScript. De par leur conception, ni lire, ni écrire de tels cookies n'est possible.

86
drdaeman

Peut utiliser cette extension pour décocher HttpOnly, puis fonctionne document.cookie en javascript: https://chrome.google.com/webstore/detail/editthiscookie/fngmhnnpilhplaeedifhccceomclgfbg

0
Nabi K.A.Z.