¿Cómo validar el token CSRFGuard en el lado del servidor?

1

He implementado la biblioteca OWASP CSRFGuard para proteger mi aplicación contra los ataques CSRF. Estoy utilizando el archivo y el servlet de JavaScript CSRFGuard para inyectar tokens CSRF en todas las solicitudes Ajax. Hasta ahora estoy viendo que el token se está agregando correctamente a todas las solicitudes.

¿Mi pregunta es cómo validar que este token es válido y reconocido por la biblioteca en el lado del servidor? Puedo enviar el token al servidor, pero no tengo nada con qué comparar. Mi preocupación es que un atacante podría inyectar cualquier valor y la aplicación no sabría si esto es válido o no.

He eliminado y alterado este token de las solicitudes y he notado que el filtro no las rechaza, por lo que asumo que la validación de este token es algo que debo implementar en mi servlet, ¿verdad? ¿Pero cómo? He examinado las clases de CSRFGuard pero no he encontrado ninguna que almacene el token generado por el servlet de JavaScript.

    
pregunta Lennin 30.12.2016 - 19:00
fuente

1 respuesta

1

Después de explorar el código durante un par de semanas intentando encontrar una forma de validar el token en el lado del servidor, encontré que está almacenado en la variable HttpSession session . Mire el método fetchCsrfToken de la clase JavaScriptServlet .

En base a eso, estoy validando el token en el lado del servidor de la siguiente manera:

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
}

Espero que esto sea útil para otras personas que usan la biblioteca OWASP CSRFGuard.

    
respondido por el Lennin 13.01.2017 - 04:30
fuente

Lea otras preguntas en las etiquetas