es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Por qué no almacenar el token de acceso JWT en la memoria y el token de actualización en una cookie?

Ya se han formulado muchas preguntas sobre cómo almacenar de forma segura los tokens JWT al trabajar con una aplicación basada en navegador. El consenso parece ser que se deben utilizar cookies seguras de uso exclusivo de HTTP. Sin embargo, parece que existen muchas variaciones en cuanto a cómo almacenar los tokens JWT cuando se utilizan tanto tokens de acceso de corta duración como tokens de actualización de larga duración.

He identificado las siguientes variaciones:

1. Almacenar tanto el token de acceso JWT como el token de actualización en cookies seguras de uso exclusivo de HTTP

Ventajas:
– Los tokens de acceso y de actualización no se pueden acceder desde JavaScript

Desventajas:
– Introduce vulnerabilidades de tipo CSRF, por lo que también se debe añadir un token CSRF

La respuesta principal de aquí aconseja añadir tokens CSRF: https://stackoverflow.com/a/37396572/6735966

2. Almacenar un token de acceso JWT en memoria y el token de actualización en una cookie segura de uso exclusivo de HTTP

Ventajas:
– El token de actualización no se puede acceder desde JavaScript
– El token de acceso se envía a través de JavaScript, por lo que no está expuesto a CSRF
– La cookie de actualización solo se puede utilizar para obtener un nuevo token de acceso. Si se configura el CORS correctamente, no es posible leer el token de acceso de la respuesta a través de una solicitud de otro dominio por parte de un tercero malicioso. Por lo tanto, este enfoque parece seguro frente a CSRF.

Desventajas:
– El token de acceso se puede acceder a través de JavaScript (pero expira rápidamente)

Se recomienda aquí, aunque obtuvo muchos menos votos que la publicación principal: https://stackoverflow.com/a/63593954/6735966

3. Almacenar un token de actualización en memoria y el token de acceso JWT en una cookie segura de uso exclusivo de HTTP

Ventajas:
– El token de acceso no se puede acceder desde JavaScript
– El token de actualización se envía a través de JavaScript, por lo que no está expuesto a CSRF

Desventajas:
– El token de actualización de larga duración se puede acceder desde JavaScript
– El token de acceso es vulnerable a CSRF

Se describe un enfoque similar en la respuesta principal de aquí: https://stackoverflow.com/a/54378384/6735966

Teniendo en cuenta las ventajas y desventajas, almacenar el token de acceso JWT en memoria y el token de actualización en una cookie segura de uso exclusivo de HTTP definitivamente parece una buena idea para mí. Sin embargo, a pesar de que hay muchas preguntas sobre este tema, ninguna de las respuestas más votadas considera este enfoque. Por lo tanto, mi pregunta es: ¿Por qué no almacenar el token de acceso JWT en memoria y el token de actualización en una cookie, en lugar de utilizar algunos de los otros enfoques?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Como modelo de lenguaje de IA, no puedo decir con certeza por qué las respuestas más votadas no consideran almacenar el token de acceso JWT en la memoria y el token de actualización en una cookie. Sin embargo, puedo proporcionar algunas posibles explicaciones basadas en mis observaciones.

    En primer lugar, la comunidad de seguridad generalmente recomienda no almacenar información sensible en la memoria, ya que es más vulnerable a ataques. Aunque el token de acceso tiene una duración limitada, aún representa un riesgo si un atacante obtiene acceso al dispositivo del usuario.

    En segundo lugar, el enfoque de almacenar el token de acceso en la memoria y el token de actualización en una cookie puede no ser adecuado para todas las aplicaciones. Por ejemplo, si la aplicación requiere que el usuario vuelva a iniciar sesión después de cerrar el navegador, almacenar el token de acceso en la memoria no sería factible.

    En tercer lugar, otros enfoques que almacenan ambos tokens en cookies con protección CSRF o separan los tokens en diferentes cookies pueden estar más establecidos y ser más ampliamente utilizados, por lo que reciben más votos de la comunidad.

    En conclusión, si bien almacenar el token de acceso en la memoria y el token de actualización en una cookie puede tener sus ventajas, puede que no sea adecuado para todos los escenarios y puede que no sea tan ampliamente recomendado como otros enfoques.

Comments are closed.