¿Qué sucede si alguien roba un token web JSON que se usa para la autenticación en una aplicación web?

Si alguien roba el token, puede hacerse pasar por su usuario. Generalmente almacenamos JWT en cookies, lo que nos hace vulnerables a los ataques XSS y CSRF.

Hay tres cosas importantes que hacer:

  • Use HTTPS : TLS de extremo a extremo evita que alguien intercepte o detecte las solicitudes en el cable y robe el token.
  • Almacene los tokens de forma segura en el cliente : si almacena su token en una cookie, asegúrese de usar el indicador HttpOnly para evitar el robo a través de XSS y use la protección CSRF en todos sus formularios.
  • Vence los tokens : si todo lo demás falla, y un token se roba, una expiración sensata asegurará que solo haya un período de tiempo limitado para que el token pueda usarse para causar daño.

Solo la parte de la firma del token está encriptada y contiene: encabezado + cuerpo / reclamo + secreto, para verificar la integridad / autenticidad del token. Todo lo demás solo está codificado en Base64.

El token es cómo el servidor identifica una sesión de usuario. Si alguien roba el token, el servidor normalmente no lo notará.

En general, los tokens están limitados a una sesión, lo que los hace más desechables, pero aún así, si alguien logra resolver cómo robarlos (debería ser bastante difícil), entonces tienes un gran problema.