Come convalidare il token CSRFGuard sul lato server?

1

Ho implementato la libreria OWASP CSRFGuard per proteggere la mia applicazione dagli attacchi CSRF. Sto utilizzando il file JavaScript CSRFGuard e il servlet per iniettare i token CSRF in tutte le richieste Ajax. Finora vedo che il token è stato aggiunto correttamente a tutte le richieste.

La mia domanda è come verificare che questo token sia valido e riconosciuto dalla libreria sul lato server? Posso ottenere il token sul lato server ma non ho nulla con cui confrontarlo. La mia preoccupazione è che un utente malintenzionato possa iniettare qualsiasi valore e l'app non saprebbe se ciò è valido o meno.

Ho cancellato e modificato questo token dalle richieste e ho notato che il filtro non le sta rifiutando, quindi presumo che la validazione di questo token sia qualcosa che devo implementare nel mio servlet, giusto? Ma come? Ho esaminato le classi CSRFGuard ma non ho trovato nessuna che memorizza il token generato dal servlet JavaScript.

    
posta Lennin 30.12.2016 - 19:00
fonte

1 risposta

1

Dopo aver esplorato il codice per un paio di settimane cercando di trovare un modo per convalidare il token sul lato server, ho scoperto che è memorizzato nella variabile HttpSession session . Guarda il metodo fetchCsrfToken della classe JavaScriptServlet .

In base a ciò, convalido il token sul lato server come segue:

String CSRFToken = request.getHeader("OWASP_CSRFTOKEN");
if(CSRFToken.equals(tokenValue)) { 
    // Code to execute if the token is valid 
} else { 
    // Code to execute if the token is not valid
}

Spero che questo sia utile per gli altri che usano la libreria OWASP CSRFGuard.

    
risposta data 13.01.2017 - 04:30
fonte

Leggi altre domande sui tag