2009-06-03 4 views
8

Mi URL del documento actual es http: //127.0.0.1/foo y tengo que cambiar el valor de una cookie para http: //127.0.0.1/bar. document.cookie está vacío porque la URL del documento es foo. Por el momento, solo quiero leer el valor de la cookie. ¿Alguna pista?Recuperar una cookie de un camino diferente

Respuesta

16

Al crear la cookie, si establece la ruta a '/' en lugar de 'foo', podrá leerla en cualquier parte del dominio, incluyendo '/ foo', '/ bar', etc.

+0

por cierto este enlace puede ser útil: http://www.quirksmode.org/js/cookies.html –

+0

No puedo cambiar la creación y la ruta de la cookie. ¿Significa que es imposible acceder a cookie of bar desde foo? –

+0

No es un gran problema de seguridad porque la cookie no está realmente protegida de todos modos. Debido a SOP ignorando rutas, las rutas de cookies no son una barrera de seguridad significativa. – Antimony

2

No puede acceder a las cookies desde una ruta diferente; de ​​lo contrario, sería un problema de seguridad.

La única manera que se me ocurre es hacer /bar establece una cookie cuya path=/ de manera que todas las páginas en / (incluyendo /foo) puedan acceder a él.

3

Como JJ y grawity han mencionado que no hay manera que usted puede hacer esto desde su página. Sin embargo, tienes un trabajo alrededor.

i. Coloque un iframe que apunte a http://localhost/bar. Tenga un elemento oculto en la página "barra" donde almacena el valor de la cookie. (Permita que este iframe tenga un tamaño de 1 * 1 para que no sea visible).

ii. Use JavaScript en la página "foo" para recuperar el valor de la cookie.

Un enfoque similar (con modificaciones) se puede utilizar para escribir el valor de la cookie también!

Gracias,

Ramjee.

+0

¿Esto no le permitiría a nadie en Internet tomar la galleta? – Antimony

12

Puede crear un apuntando a un recurso dentro de /bar, y cross-frame-script en él. por ejemplo:

<iframe src="/bar/blank.html" id="barframe"></iframe> 

var barframe= document.getElementByIf('barframe'); 
var bardocument= 'contentDocument' in barframe? barframe.contentDocument : barframe.contentWindow.document; // IE compat 
alert(bardocument.cookie); 

Cookies path= es una medida de conveniencia para evitar conflictos de nombres de galletas accidentales. Dado que las diferentes rutas comparten un origen de JavaScript, no es un mecanismo de seguridad efectivo.

+3

+1 para señalar que las rutas de cookies no son un muro de seguridad significativo. – Antimony

+1

La ruta es una característica de rendimiento, no de seguridad ... Me faltaba la parte "barframe.contentDocument". Muchas gracias. +1 de mi parte –

Cuestiones relacionadas