Qual è la "portata di validità" di un cookie del browser?

1

Considera la protezione CSRF standard di un'applicazione Ruby on Rails: un token CSRF è incorporato nella pagina HTML, mentre allo stesso tempo memorizzato crittografato come parte del cookie di sessione. Quando si effettua una richiesta, il token incorporato viene inviato insieme al cookie e il server può quindi verificare se corrispondono.

Supponiamo ora di aprire la stessa applicazione in due schede separate del browser. Avranno diversi token CSRF e come tali diversi cookie di sessione. Tuttavia, quando faccio richieste post non ci sono problemi CSRF.

Ciò solleva la domanda: qual è lo scopo di un cookie del browser? Se l'ambito fosse globale (vale a dire valido su diverse schede del browser), non appena avessi aperto la seconda scheda, il primo cookie di sessione sarebbe stato sovrascritto (poiché provengono dalla stessa origine e hanno la stessa chiave). Ma posso fare richieste POST dalla prima scheda, e non falliscono, il che implica che ogni scheda ha il proprio set di cookie.

D'altra parte, se accedo in una scheda e ne apro una seconda, ovviamente ho una sessione di applicazione anche nella seconda scheda, il che implica che i cookie sono condivisi tra le schede del browser.

Quindi, qual è il vero "ambito" di un cookie del browser?

    
posta daniel f. 12.07.2018 - 14:34
fonte

1 risposta

3

... two separate browser tabs. They will have different CSRF tokens and as such different session cookies.

Non lo fanno.
Lo stesso cookie viene utilizzato ogni volta che si accede allo stesso sito all'interno dello stesso browser, ovvero l'ambito del cookie non è la scheda corrente ma il browser corrente.

Ecco perché di solito è anche impossibile accedere allo stesso sito con lo stesso browser contemporaneamente. Esistono estensioni del browser per limitare l'ambito del cookie alla scheda corrente al fine di rendere possibile il multi-accesso, ma per impostazione predefinita l'ambito è il browser corrente.

Per essere più precisi: se passi a un altro browser hai un contesto diverso per i cookie. Se si passa a un profilo browser diverso si ottiene anche un contesto diverso. Lo stesso quando si passa alla modalità privata. Ma se passi solo a una tab o finestra diversa, hai lo stesso contesto.

Si noti che un cookie potrebbe essere ulteriormente limitato dal percorso sul sito utilizzando un argomento path e potrebbe anche includere sottodomini utilizzando l'argomento domain . Consulta la sezione "Ambito dei cookie" all'indirizzo MDN: cookie HTTP per ulteriori dettagli.

    
risposta data 12.07.2018 - 14:55
fonte

Leggi altre domande sui tag