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?