L'intercettore token di Struts2 è un modo valido per proteggere contro CSRF?

3

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?

    
posta Nzall 30.11.2016 - 13:02
fonte

1 risposta

1

Se la tua applicazione ha CORS (Cross Origin Resource Sharing) abilitato allora sì, il codice javascript in esecuzione nella pagina dell'attaccante può effettuare chiamate alla tua applicazione, recuperare il token e inviarlo nella richiesta successiva che può tradursi in falsificazione di richieste cross-site ( CSRF).

Tuttavia, se CORS è disabilitato sulla tua applicazione, non c'è quasi alcun modo in cui un aggressore possa accedere alla tua pagina e recuperare i token da essa. Gli attacchi CSRF vengono in genere eseguiti con l'aiuto di utenti autenticati ingannandoli a fare clic su un collegamento che esegue codice dannoso.

L'intercettore token Struts convalida i token una volta e quindi reimposta il token nell'oggetto Session in modo che nessun altro possa utilizzare lo stesso token che potrebbe essere dovuto a un attacco CSRF o all'utente che tenta di inviare nuovamente la stessa richiesta (Multiple Form Sumission).

    
risposta data 26.07.2017 - 01:34
fonte

Leggi altre domande sui tag