Práctica recomendada para almacenar el token de autenticación del lado del cliente

3

Estoy creando un sistema de frontend / backend separado donde el usuario 2FA se autentica y obtiene un JWT de vuelta al lado del cliente.

Estoy usando angular y, por ahora, simplemente guardo ese token en $ window.sessionStorage y lo incluyo en el encabezado de cada solicitud para identificar / autorizar / autenticar al usuario.

¿Hay un almacén más seguro de este token en el lado del cliente? Ahora mismo, al cerrar sesión, borro el lado del cliente clave y lo marco deshabilitado en la base de datos, pero si el usuario simplemente abandona el navegador, no hay ninguna garantía de que esto suceda hasta que caduque el token (6 horas caducan ahora).

¡Cualquier comentario sobre este u otro hilo que ya lo haya respondido es sumamente apreciado!

    
pregunta bclark8923 08.01.2017 - 02:29
fuente

2 respuestas

1

Tal vez podría implementar el tiempo de espera inactivo en el servidor y, si no ve actividad durante cierto tiempo (por ejemplo, 10 minutos), marque la sesión caducada.

    
respondido por el Sunil Agrawal 08.01.2017 - 04:10
fuente
0

[EDITADOS] Los JWT están diseñados para autenticar aplicaciones sin estado y no para sesiones, por ejemplo, deberá crear un mecanismo de invalidación para invalidar tokens individuales, una función que se requiere si está usando una aplicación basada en sesión 1 . Las mejores prácticas para asegurar un JWT se explican en OWASP JWT Cheat Sheet . Para el almacenamiento seguro, debe tener en cuenta lo siguiente:

  • Almacenar el JWT en el contenedor sessionStorage, no como una cookie.
  • Cuando desee utilizar el token, use JS para agregarlo como "portador".
  • Haga una huella digital de su token para evitar ataques de pirateo lateral.
respondido por el Santiago Aragón 11.04.2018 - 11:26
fuente

Lea otras preguntas en las etiquetas