Non sono sicuro di capire completamente come Ruby on Rails gestisce la protezione CSRF.
La mia comprensione era che un token è generato e incorporato nel codice HTML come metatag e allo stesso tempo crittografato nel cookie di sessione. Quando si esegue una richiesta POST, sia il valore del tag che il cookie vengono inviati al server, che decrittografa il cookie e confronta i token CSRF. In caso di mancata corrispondenza, la protezione CSRF rifiuterà la richiesta.
Tuttavia, non sono sicuro di capire come funzioni quando sono aperte più finestre del browser.
Considera il seguente scenario: apro due pagine diverse della mia applicazione in due schede separate. Hanno due diversi token CSRF ei cookie di sessione differiscono l'uno dall'altro. Quando si apre la seconda scheda, il cookie di sessione impostato con la prima scheda viene sovrascritto. Mi sarei aspettato che una richiesta POST nella prima scheda fallisse, poiché il cookie di sessione ora contiene il valore token CSRF crittografato della seconda scheda.
Invece, la richiesta passa normalmente, nessun errore viene generato dall'applicazione. Quindi, dove sto fraintendendo come funziona la protezione CSRF di Rails?