2009-06-20 14 views
34

Ich gehe in ein Forum, das vBulletin 3.8 verwendet. Wenn ich mich anmelde, verwende ich Firebug, um zu sehen, welche Cookies gesetzt wurden. Ich sehe diese Cookies:Warum zeigt document.cookie nicht alle Cookies für die Website an?

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

Sie alle einen Wert gesetzt hatte, und die Domäne war identisch.

Aber wenn ich JavaScript verwenden, um sie zu sehen, sie sah nur diese Cookies:

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

In Firebug sehe ich nur Diese drei Cookies: bbsessionshash, bbpasword und bbuserid, die tatsächlich gesetzt wurden. HTTPOnly in der Spalte HTTPOnly. Was bedeutet es und ist das der Grund, warum ich diese Cookies in JavaScript unter Verwendung document.cookie nicht sehen kann?

Antwort

54

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

Cookies sind nicht direkt sichtbar zu clientseitige Programme wie JavaScript, wenn sie mit die Httponly-Flag gesendet wurden. Unter dem Gesichtspunkt der Ansicht des Servers, der einzige Unterschied bezüglich des normalen Fall ist, dass die Set-Cookie-Header Linie wird ein neues Feld enthält die Zeichenfolge `Httponly 'hinzugefügt:

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

Wenn der Browser ein solches Cookie erhält, soll er es als verwenden, das in den folgenden HTTP-Austauschen üblich ist: , aber nicht für clientseitige Skripts sichtbar machen. Das Flag HttpOnly gehört nicht zu einem Standard und ist nicht in allen Browsern implementiert.

Update von 2017: viel Zeit seit 2009 vergangen waren, und HttpOnly Kopfflagge ein Standard wurde ist, definiert in der section 5.2.6 of RFC6265, mit den Speicher Semantik in demselben Dokument beschrieben (suchen Sie nach „http -only-flag "im gesamten RFC-Text).

Es gibt keine Weise, auf irgendetwas über die HttpOnly Plätzchen von "Nicht-HTTP" APIs zuzugreifen, z. JavaScript. Diese Cookies können weder gelesen noch geschrieben werden.

+1

Aber gibt es eine Möglichkeit, diese Cookies irgendwie vom Frontend aus zu erreichen? Cookie-Erweiterung Chrome-Erweiterung zeigt sie, aber document.cookie nicht. –

+2

@SilberRingvee, tut mir leid, aber es gibt keine. Wenn es einen Weg gibt, ist es ein Browsersicherheitsfehler (und ein ziemlich strenger), der gemeldet und behoben werden sollte. Erweiterungen von Browsern sind jedoch andere Angelegenheiten - sie haben höhere Privilegien als die Website und haben Zugriff auf die prilived APIs (z ['chrome.cookies.getAll' für Chrome] (https://developer.chrome.com/extensions/cookies#method-getAll)), die alle Cookies sehen kann. – drdaeman

+0

@SilverRingvee, haben Sie eine Möglichkeit gefunden, mit HTTPOnly Flag auf die Cookies zuzugreifen? –

Verwandte Themen