Attualmente sto implementando l'intercettore token di default di Struts2 su tutti i nostri moduli come misura contro CSRF (facendo sì che un utente esegua inconsapevolmente un'azione sul nostro prodotto visitando un altro sito Web e attivando javascript dannosi).
Alcune specifiche tecniche sul token: quando viene utilizzato, crea 2 campi nascosti nel modulo: un campo chiamato struts.token.name
contenente il nome del token e un campo con il nome del token e un token generato casualmente. Questo token viene anche salvato nella sessione e il nome del token è indicato nella pagina di configurazione. Configuriamo ciascun token di pagina in modo che abbia un nome univoco basato sul nome della pagina e sull'ID del token, se disponibile. In questo modo un utente può avere 2 pagine di modifica dello stesso tipo aperte, ad esempio per copiare determinati attributi da un oggetto all'altro.
Quando la pagina viene inviata, viene verificato se la pagina contiene un token del nome indicato nella pagina di configurazione. In caso contrario, la pagina genera un errore. Se il token è presente, viene verificato se il token è uguale a quello memorizzato nella sessione. In caso contrario, la pagina genera un errore. Se entrambi i controlli passano, la pagina procede normalmente.
La mia preoccupazione principale è che una pagina dannosa utilizzi Javascript per recuperare la pagina originale, aggiungerla alla propria pagina e recuperare i relativi campi dei token per aggiungerli alla propria richiesta. È una preoccupazione legittima?