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
?
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'indicateurHttpOnly
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.
Peut utiliser cette extension pour décocher HttpOnly
, puis fonctionne document.cookie
en javascript: https://chrome.google.com/webstore/detail/editthiscookie/fngmhnnpilhplaeedifhccceomclgfbg