Sto implementando la protezione CSRF (usando la libreria CSRF di Symfony), e mi chiedo quale risposta inviare ai client dopo aver ricevuto un token non valido.
Attualmente abbiamo una sessione che dura 30 giorni e vorremmo che il token CSRF scada dopo 12 ore (sto tenendo traccia del tempo di scadenza nel back-end, non un cookie). Quindi esiste la possibilità che un utente possa lasciare una pagina aperta tutto il giorno e provare a inviare un modulo.
Ho visto questo accadere con JIRA quando torno al mio computer un giorno dopo aver lasciato aperta una pagina, poiché anche la loro sessione è di lunga durata, ma il token CSRF dura solo circa un giorno. Il mio piano adesso è simile a quel flusso - per inviare un errore 403, e poi un nuovo token verrà inviato alla successiva richiesta GET (supponendo che la loro sessione sia ancora valida).
Inoltre, qual è la raccomandazione per i dati che l'utente ha compilato nei moduli HTML? Dovrei tenerne traccia e ripopolare il modulo con i dati che hanno già inserito quando finalmente torneranno a quella pagina?