2009-06-03 6 views
8

L'URL del documento corrente è http: //127.0.0.1/foo e devo modificare il valore di un cookie per http: //127.0.0.1/bar. document.cookie è vuoto perché l'URL del documento è foo. Per il momento, voglio solo leggere il valore del cookie. Qualche idea?Recupero di un cookie da un percorso diverso

risposta

16

Quando si crea il cookie, se si imposta il percorso su "/" anziché su "pippo", sarà possibile leggerlo ovunque nel dominio, tra cui "/ foo", "/ bar", ecc.

+0

btw questo collegamento può essere utile: http://www.quirksmode.org/js/cookies.html –

+0

Non riesco a modificare la creazione e il percorso del cookie. Quindi vuol dire che è impossibile accedere al cookie di bar da foo? –

+0

Non è un grosso problema di sicurezza perché il cookie non è comunque protetto. A causa dei percorsi di ignoranza SOP, i percorsi dei cookie non rappresentano una barriera di sicurezza significativa. – Antimony

2

Non è possibile accedere ai cookie da un percorso diverso, altrimenti sarebbe un buco di sicurezza.

L'unico modo che posso pensare è fare /bar impostare un cookie cui path=/ in modo che tutte le pagine in / (compresi /foo) potrebbero accedervi.

3

Come JJ e Grawity hanno menzionato, non c'è modo di farlo dalla tua pagina. Tuttavia, hai un lavoro in giro.

i. Posiziona un iframe che punta a http://localhost/bar. Avere un elemento nascosto nella pagina "bar" in cui si memorizza il valore del cookie. (lascia che questo iframe sia 1 * 1 in modo che non sia visibile).

ii. Usa JavaScript nella pagina "pippo" per recuperare il valore del cookie.

Un approccio simile (con modifiche) può essere utilizzato anche per scrivere il valore del cookie!

Grazie,

Ramjee.

+0

Questo non permetterebbe a chiunque in internet di prendere il cookie? – Antimony

12

È possibile creare un puntato a una risorsa all'interno di /bar e lo script di cross-frame su di esso. ad esempio:

<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); 

Cookie path= è una misura convenienza per evitare accidentali scontri nome del cookie. Dato che percorsi diversi condividono un'origine JavaScript, non è un meccanismo di sicurezza efficace.

+3

+1 per indicare che i percorsi dei cookie non sono un muro di sicurezza significativo. – Antimony

+1

Il percorso è una funzione di prestazioni, non di sicurezza ... Mi mancava la parte "barframe.contentDocument". Molte grazie. +1 da me. –