Al lavoro sospettiamo un'app GWT (che non è ancora in produzione) che possediamo come vulnerabili a CSRF. Dobbiamo esaminarlo dal punto di vista della scatola nera prima di eseguire un controllo di sicurezza di terze parti.
Dato che tutte le chiamate nell'app vengono effettuate tramite AJAX (con metodo POST), la semplice replica di una chiamata Ajax in modo malevolo non è ottenibile grazie alla politica Same-Origin. In effetti sappiamo che non esiste una protezione CSRF, ma dal momento che solo i corpi delle richieste ("payload" nella scheda di rete di Chrome) vengono letti dal server, a prima vista sembra che la vulnerabilità non possa essere sfruttata.
C'è un modo per creare una richiesta simile attraverso un browser con un modulo classico? Il mio problema è che non riesco a replicare il corpo della chiamata Ajax attraverso un modulo: l'app legge il corpo delle richieste - l'invio di un modulo di classificazione richiede input con coppie chiave / valore che non verrebbero prese in considerazione dal server.
In altre parole, è possibile, con un modulo html, inviare una richiesta che contiene solo testo in un corpo, invece di coppie chiave-valore nel corpo? O c'è un altro angolo di attacco per questi casi?
Modifica (informazioni aggiuntive):
I clic sui pulsanti dell'applicazione generano richieste che utilizzano text/x-gwt-rpc; charset=UTF-8
come content-type
che, suppongo, è ciò che si aspettano i gestori di chiamata GWT RPC e non possono essere "falsificati" con un browser normale (ovviamente una richiesta del genere potrebbe essere falsificato senza un browser, ma va bene, visto che sto solo cercando di sfruttare un potenziale CSRF).
Ciò che mi dà fastidio è il fatto che so che non ci sono token CSRF nelle richieste e che potrebbe esistere un modo complicato per falsificare le richieste maligne - ma non vedo come.