¿Está JWT en las cookies con alguna solución CSRF tan vulnerable al XSS como JWT en el almacenamiento local?

3

He leído que los tokens JWT no deberían almacenarse en localStroage porque los ataques XSS pueden leerlos. La solución propuesta es almacenar tokens JWT en cookies HTTPOnly y usar cookies anti-CSRF con doble envío. OWASP dice que todas las soluciones CSRF son vulnerables a XSS. Si ese es el caso, ¿es JWT en las cookies HTTPOnly con CSRF igual de vulnerable a XSS? Si es así, ¿por qué molestarse con CSRF y simplemente almacenar su JWT en localStorage?

    
pregunta Bradford 11.04.2016 - 20:23
fuente

1 respuesta

3
  

He leído que los tokens JWT no deberían almacenarse en localStroage porque los ataques XSS pueden leerlos.

Verdadero. Si almacena información en su JWT y no quiere que un atacante la lea a través de XSS, almacenarla en una cookie httpOnly es una buena idea.

  

La solución propuesta es almacenar tokens JWT en cookies HTTPOnly y usar CSRF con cookies de doble envío.

Creo que estás confundiendo dos cosas aquí. Almacenar los tokens en una cookie httpOnly ya es la solución para ellos que no se leen.

CSRF es un asunto diferente y no se puede utilizar para leer datos. Sin embargo, se puede utilizar para realizar acciones en un sitio web para un usuario que ese usuario no intentó. Una solución para esto es el patrón de doble envío de cookies.

  

OWASP dice que todas las soluciones CSRF son vulnerables a XSS.

Sí, bastante.

  

Si ese es el caso, ¿es JWT en las cookies HTTPOnly con CSRF igual de vulnerable a XSS?

El problema es que no puede utilizar un token anti-CSRF que se almacena en una cookie httpOnly con el patrón de doble envío de cookies .

Necesita acceso del lado del cliente al token, ya que de otro modo no sería posible insertar el token en el formulario.

Para hacer que esto funcione, necesitaría que su cookie no sea httpOnly o almacenar el token en otro lugar además de la cookie, por ejemplo, en el almacenamiento local.

De cualquier manera, un atacante puede omitir la protección CSRF una vez que obtuvieron XSS.

  

Si es así, ¿por qué molestarse con CSRF y simplemente almacenar su JWT en localStorage?

Debería almacenar su JWT en una cookie httpOnly si desea ocultar su contenido a un atacante, incluso si existe una vulnerabilidad XSS. Si no le importa, o si necesita acceder a la información usted mismo, localStorage funciona igual de bien.

    
respondido por el tim 11.04.2016 - 21:24
fuente

Lea otras preguntas en las etiquetas