2009-06-20 7 views
34

Je vais à 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:Pourquoi document.cookie ne montre-t-il pas tous les cookies du site?

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

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

Mais quand je JavaScript utiliser pour les voir, il ne voyait ces cookies:

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

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

Répondre

54

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

Les cookies ne sont pas directement visibles pour les programmes côté client tels que JavaScript si elles ont été envoyés avec le drapeau HttpOnly. Du point de vue du serveur, la seule différence par rapport de l'affaire normale est que l'en-tête Set-Cookie ligne est ajouté 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 habituel 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 à partir de 2017: beaucoup de temps avait passé depuis 2009, et HttpOnly drapeau d'en-tête est devenu une norme, définie dans le section 5.2.6 of RFC6265, avec la sémantique de stockage décrites dans le même document (chercher « http -only-flag "dans tout le texte RFC).

Il n'y a pas moyen d'accéder à quoi que ce soit au sujet des cookies HttpOnly API « non-HTTP », par exemple JavaScript. Par conception, il n'est pas possible de lire ou d'écrire de tels cookies.

+1

Mais y a-t-il un moyen d'accéder à ces cookies en quelque sorte depuis le frontend? L'extension Chrome du gestionnaire de cookies les montre, mais pas document.cookie. –

+2

@SilverRingvee, désolé mais il n'y en a pas. S'il y a un moyen, c'est un bug de sécurité du navigateur (et un problème assez grave) qui doit être signalé et corrigé.Les extensions navigateur sont différentes, cependant - elles ont des privilèges plus élevés que le site web, et ont accès aux APIs prilives ['chrome.cookies.getAll' pour Chrome] (https://developer.chrome.com/extensions/cookies#method-getAll)) qui peut voir tous les cookies. – drdaeman

+0

@SilverRingvee, avez-vous trouvé un moyen d'accéder aux cookies avec le drapeau HTTPOnly? –

Questions connexes