Durante la ricerca l'elenco dei cookie per cookie validi, un confronto tra i attributi dominio del cookie è realizzato con il nome di dominio Internet di l'host da cui l'URL sarà inverosimile. Se è presente una corrispondenza di coda, , il cookie passerà attraverso il percorso corrispondente per verificare se è necessario inviarlo. "Tail matching" significa che l'attributo dominio è abbinato alla coda del nome di dominio completo di dell'host. Un attributo dominio di "acme.com" corrisponderebbe ai nomi host "anvil.acme.com" e a "shipping.crate.acme.com". Solo gli host all'interno del dominio specificato possono impostare un cookie per un dominio e domini devono avere almeno due (2) o tre (3) periodi per impedire domini di il modulo: ".com", ". edu "e" va.us ". Qualsiasi dominio che non riesce entro uno dei domini speciali di primo livello elencati di seguito richiede solo due periodi. Qualsiasi altro dominio richiede almeno tre. I sette domini speciali speciali sono: "COM", "EDU", "NET", "ORG", "GOV", "MIL" e "INT".
Il valore predefinito del dominio è il nome host del server che ha generato la risposta del cookie.
leggere here.
è possibile caricare un iframe da un host che quindi si ricarica con il valore del cookie codificato nella parte del segmento (dopo il #).
è quindi possibile accedere all'attributo document.location dalla finestra padre (fa clic sull'unica cosa accessibile). decodificarlo e passarlo al tuo server facendo una richiesta Ajax.
Questo potrebbe sembrare così.
xss.php (situato su cookie.esempio.com):
<?php
$data = array(
'uid' => $_COOKIE['uid'],
'loginhash' => $_COOKIE['loginhash']);
header('Location: xss.php#'.urlencode(json_encode($data)));
per questo caso particolare non deve essere l'hashtag! è appena conveniente per altre situazioni. questo può essere fatto anche in javascript.
un altro sito incorpora xss.php:
<iframe id="cookies" src="http://cookies.example.com/xss.php"></iframe>
you need to somehow delay the following of do it in a loop that stops after 5 seconds or something.
if(document.getElementById('cookies').location != 'http://cookies.example.com/xss.php') {
// read location, extract hashtag, json decode using javscript, there you have your user. send it to server for validation or whatever.
}
questo teqnique è chiamato XSS recieving. è ad esempio utilizzato da Facebook per tutte le loro librerie di connessione javascript.
un modo probabilmente migliore sarebbe una sorta di protocollo di scambio di token come openid.
amazon usa anche questo.
è possibile impostare un provider openid (sono disponibili librerie che possono farlo immediatamente) e impostarlo per reindirizzare auotmaticamente indietro senza l'interazione dell'utente. Ho visto spesso il protocollo openid utilizzato per altri scopi, proprio come la comunicazione cross-domain.
Penso che questo articolo spieghi in modo abbastanza sintetico: http://www.codeguru.com/csharp/csharp/cs_internet/article.php/c19417/Sharing-Cookies-Across-Domains.htm – peteski