2011-01-18 8 views
10

Come proteggersi dagli attacchi XSRF in Grails. Vedo che le forme supportano la nozione di useToken che (penso che dovrebbe essere sufficiente). Tuttavia, remoteForm o altre richieste relative AJAX non supportano questa funzione.Come proteggi contro XSRF in Grails?

Inoltre, c'è un modo per invertire la funzionalità di useToken in modo che venga sempre utilizzato piuttosto che abilitato caso per caso?

+0

So che [controllare l'intestazione HTTP Referer non è sufficiente] (http://www.secureworks.com/research/blog/research/21009/), ma è un inizio migliore del niente, soprattutto se non si Permettere referenti vuoti E questo è piuttosto facile da aggiungere come filtro. – OverZealous

risposta

2

Si potrebbe provare a guardare il codice sorgente del tag <g:form>. Utilizza uno SynchronizerToken per creare un token e memorizzarlo nella sessione. In base alla risoluzione di this issue dovrebbe essere possibile utilizzare lo stesso token per tutti i moduli sulla stessa pagina. Non ho provato questo, ma teoricamente avresti solo bisogno di creare manualmente un campo nascosto nel modulo e generare il token in quel campo.

0

Abbiamo iniettato un valore nascosto per l'oggetto richiesta in un filtro precedente e crittografato il valore con una chiave specifica. Iniettiamo quindi quel valore request.token su ogni modulo del sito e quando riceviamo un POST abbiamo un filtro before per verificare che quel campo nascosto sia presente e il suo valore possa essere decodificato dalla stessa chiave segreta.

Se quel valore nascosto non è presente o se è obsoleto, utilizziamo un indicatore di data e ora come carico utile: diamo al cliente uno stato di errore.

Questo è un modo alternativo a quanto descritto in precedenza e lo usiamo, perché non usiamo sessioni sui nostri siti per rendere più facile il bilanciamento del carico.

Problemi correlati