¿Dónde debe almacenar los tokens web JSON ( JWT )?

¿Dónde debe almacenar los tokens web JSON ( JWT )?

@programacion

A lo largo de estos años, se ha visto muchos mecanismos de autenticación, algunos de ellos son RESTful y otros no. Los servicios RESTful utilizaban principalmente JSON Web Token (JWT) como un token de autenticación.

Siempre que implementé la autenticación basada en JWT, me hice esta pregunta: " ¿Dónde almacenamos el JWT?"

Respondamos la gran pregunta.

Tenemos tres opciones disponibles para almacenar los datos en el lado del cliente y cada una de ellas tiene sus propias ventajas y desventajas. Y las opciones son:

  1. Cookies
  2. LocalStorage
  3. SessionStorage
https://pixabay.com/es/photos/galleta-chocolate-delicioso-1832917/

Si configura el JWT en la cookie, el navegador enviará automáticamente el token junto con la URL para la Solicitud del mismo sitio. Pero es vulnerable al CSRF .

Podemos proteger el sitio CSRFestableciendo una cookie conSameSite=strict

Pros:

  1. El navegador enviará automáticamente el token al servidor.
  2. El mismo token está disponible para varias pestañas de su instancia de aplicación.

Contras:

  1. Vulnerable a XSS.
  2. Debe adjuntar el token en el encabezado si usa un protocolo como OAuth 2.0 .

LocalStorage

https://pixabay.com/es/photos/ordenador-port%c3%a1til-escribir-internet-1149412/

LocalStorage no envía los datos automáticamente junto con la URL. Por lo tanto, debe implementar el sistema para el token de autenticación para cada URL. Pero la mejor parte es que este método no es vulnerable a CSRF.

Pros

  1. No vulnerable a CSRF.
  2. El mismo token está disponible para varias pestañas de su instancia de aplicación.

Contras

  1. Vulnerable a XSS.
  2. Necesita implementar un mecanismo para enviar el token.

SessionStorage

https://pixabay.com/es/photos/noticias-diario-prensa-peri%c3%b3dicos-1172463/

El almacenamiento de sesión es más o menos lo mismo que el almacenamiento local, excepto que el token solo tendrá acceso a una pestaña, una vez que la pestaña se cierra, la sesión se destruye. Entonces no es útil para la función como recordarme. Pero esto se puede usar en la función de inicio de sesión múltiple, ya que la pestaña A está en un inicio de sesión diferente y la pestaña B está en un inicio de sesión diferente.

Pros:

  1. No vulnerable a CSRF.
  2. Fácil de implementar Múltiples inicios de sesión en un navegador.

Contras:

  1. Vulnerable a XSS.
  2. Una vez que se cierra la pestaña, los datos de la sesión se destruyen.

Puede notar que los 3 métodos tienen la misma desventaja: " Vulnerable a XSS". Sí, todos estos métodos son vulnerables a XSS. Tenga cuidado con XSS y siga siempre las mejores prácticas para la protección XSS.

Conclusión

Tanto localStorage como SessionStorage no están protegidos por XSS de forma predeterminada.

Sin embargo, la Cookie proporciona un montón de opciones de seguridad como SameSite, ” HttpOnly, etc. Así que es bueno ir con Cookie.

"Almacene su JWT en cookie con alguna bandera segura".

Fuente:

https://javascript.plainenglish.io/where-to-store-the-json-web-token-jwt-4f76abcd4577

Report Page