Why are the cookies shared between browser tabs?
Perché spezzerebbe l'intero scopo dei cookie.
Un cookie ha tre componenti:
- Un dominio
- Alcuni dati
- Scadenza
Ogni volta che il browser esegue una richiesta http, controlla il database dei cookie (locale) per tutti i cookie che hanno un dominio corrispondente a quello della richiesta; se ne trova uno, li invia insieme al server.
Questo meccanismo è stato creato per fornire persistenza per l'http altrimenti stateless. Senza i cookie, dovremmo fornire il nostro nome utente e password per ogni singola richiesta a un sito autenticato.
Se i cookie venissero universalmente modificati per finestra, molte cose diventerebbero fastidiose. Non solo avresti bisogno di accedere ad Amazon di nuovo ogni volta che hai aperto il browser, ma avresti bisogno di accedere ogni volta che lo hai aperto in una nuova scheda - sia perché hai chiuso il precedente quando hai finito lo shopping, o perché stai aprendo i risultati in schede per confrontarli.
does avoiding this prevent CSRF on cookie based authentication web sites?
Combatterebbe CSRF, sì. Non sarebbe infallibile, dal momento che conserveresti i cookie di altri siti in quella scheda.
Se hai mai provato ad applicare questa norma a un utente, troverà immediatamente una soluzione alternativa e, di conseguenza, avrà come risultato un sistema meno sicuro.
Se vuoi scrivere un plugin per il browser per farlo da solo ... vai avanti, ma sospetto che troverai l'esperienza utente colpita troppo in fretta.