2009-06-20 15 views
34

Voy a un foro que usa vBulletin 3.8. Cuando inicio sesión, uso firebug para ver qué cookies se establecieron. Veo estas cookies:¿Por qué document.cookie no muestra todas las cookies del sitio?

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

Todos ellos tenían un conjunto de valores, y el dominio era idéntico.

Pero cuando se utiliza JavaScript para visualizarla ellos, sólo vi estas galletas:

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

En firebug, sólo veo estas tres cookies: bbsessionhash, bbpasword y bbuserid, que en realidad se establecieron. HTTPOnly en la columna HTTPOnly. ¿Qué significa y la razón por la que no puedo ver esas cookies en JavaScript es usando document.cookie?

Respuesta

54

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

cookies no son directamente visibles para programas del lado del cliente como JavaScript si han sido enviados con la bandera HttpOnly. Desde el punto de vista del servidor, el único diferencia respecto del caso normal es que el conjunto de cookies cabecera línea se añade un nuevo campo que contiene la cadena `HttpOnly ':

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

Cuando el navegador recibe dicha cookie , se supone que debe usarla como habitual en los siguientes intercambios HTTP, , pero no para hacerla visible a scripts del lado del cliente. La bandera HttpOnly no forma parte de ningún estándar y no está implementada en todos los navegadores.

actualización a partir de 2017: mucho tiempo había pasado desde 2009, y HttpOnly bandera cabecera se convirtió en un estándar, que se define en el section 5.2.6 of RFC6265, con la semántica de almacenamiento descritas en el mismo documento (busque "http -only-flag "a lo largo del texto de RFC).

Hay no manera de acceder a cualquier cosa acerca de las HttpOnly cookies de API "no HTTP", p. Ej. JavaScript. Por diseño, ni leer ni escribir tales cookies es posible.

+1

¿Pero hay alguna manera de acceder a esas cookies de alguna manera desde la interfaz? La extensión de Chrome del administrador de cookies los muestra, pero document.cookie no. –

+2

@SilverRingvee, lo siento, pero no hay ninguno. Si hay una forma, es un error de seguridad del navegador (y bastante grave) que debe ser informado y corregido. Sin embargo, las extensiones de navegador son asuntos diferentes: tienen mayores privilegios que el sitio web y tienen acceso a las API priliveged (por ej. ['chrome.cookies.getAll' for Chrome] (https://developer.chrome.com/extensions/cookies#method-getAll)) que puede ver todas las cookies. – drdaeman

+0

@SilverRingvee, ¿ha encontrado alguna forma de acceder a las cookies con el indicador HTTPOnly? –

Cuestiones relacionadas