Blog

En una publicación anterior, Zix / AppRiver discutió cómo los responsables del ataque de SolarWinds habían abusado de tokens y certificados como parte de su cadena de infecciones. Los actores malintencionados abusaron de esos mismos tipos de activos en campañas adicionales dirigidas a otras entidades. Esto resultó en un incidente de seguridad de certificado confirmado en un proveedor de seguridad de correo electrónico.

Reconociendo estas actividades maliciosas, Zix / AppRiver consideró necesario proporcionar a sus clientes una serie de artículos que analizaran los tipos de métodos de autenticación afectados y cómo funcionan. Comenzaremos con la autenticación basada en tokens.Autenticación basada en tokens

: Una descripción general

La autenticación basada en tokens aborda algunas de las limitaciones de la autenticación basada en sesiones. En este último, un servidor crea una sesión para un usuario cuando inicia sesión. Almacena el ID de sesión en una cookie, que acompaña a todas las solicitudes posteriores si el usuario permanece conectado. A continuación, el servidor verifica la identidad de un usuario comparando la cookie con los datos de sesión almacenados en la memoria.

 Una ilustración de la autenticación basada en sesiones. (Fuente: Sherry Hsu)
Una ilustración de autenticación basada en sesiones. (Fuente: Sherry Hsu)

El problema aquí es que la autenticación basada en sesión adolece de ciertos inconvenientes. En primer lugar, requiere que el servidor almacene las sesiones en su memoria. También está el problema de las cookies que funcionan en múltiples dispositivos de diferentes medios (como la web y el móvil).

Ahí es donde entra en juego la autenticación basada en tokens. Esta forma de autenticación implica que una aplicación proporcione un token firmado al cliente al validar un conjunto de credenciales de usuario. El cliente almacena ese token y lo envía con cada solicitud, momento en el que el servidor verifica el token y envía información.

 Ilustración de la autenticación basada en tokens mediante un token web JSON (JWT). (Fuente: Sherry Hsu)
Una ilustración de la autenticación basada en tokens utilizando un token Web JSON (JWT). (Fuente: Sherry Hsu)

En este sentido, la autenticación basada en tokens difiere de la autenticación basada en sesión en que es sin estado. No implica almacenar información sobre un usuario en un servidor o en una sesión. Almacena esos datos en el token en el lado del cliente.

Ventajas y desafíos de la autenticación basada en Tokens

La autenticación basada en tokens tiene muchos beneficios. Chop-Chop señala que los tokens también funcionan en diferentes sitios web y medios, lo que crea una oportunidad para una mayor diversidad de usuarios, especialmente aquellos que usan dispositivos móviles. Además de todo eso, los tokens sustituyen las credenciales de un usuario en el proceso de otorgar acceso a los datos; alguien que comprometiera un token no obtendría acceso automáticamente a las credenciales de la cuenta del usuario afectado.

Dicho esto, la autenticación basada en tokens no está exenta de desafíos. Devbridge Group observa que algunos tokens de sesión no se generan de forma segura, por ejemplo. Esto hace posible que un atacante con una muestra lo suficientemente grande de ID de sesión descubra un patrón y adivine los tokens para un grupo más grande de usuarios. También existe el problema de que los atacantes aprovechan los almacenes de tokens inseguros, los inicios de sesión múltiples y/o los largos tiempos de validación de tokens para robar secretos de autenticación.

Cómo usar de forma segura la autenticación basada en Tokens

Reconociendo los riesgos mencionados anteriormente, aquí hay algunas prácticas recomendadas para usar de forma segura la autenticación basada en tokens:

  1. Genera tokens fuertes. En particular, Devbridge recomienda que los tokens presenten un gran conjunto de valores posibles, incorporen un grado de pseudoaleación y consistan en al menos 16 bytes de longitud.
  2. Dar a los tokens una caducidad. Es importante establecer condiciones durante cuánto tiempo un token permanece válido, señala Auth0. Obviamente, si un usuario sigue activo, el token se puede renovar automáticamente. Pero también hay sabiduría en permitir que un token caduque cuando el usuario cierra la sesión y termina el token sin importar qué después de que haya transcurrido un cierto período de tiempo.
  3. No permitir múltiples inicios de sesión. Como señaló Devbridge, es posible usar atributos clave para evitar autenticaciones paralelas en las que más de una persona interactúe con la misma cuenta de usuario simultáneamente.
  4. Almacene tokens de forma segura. El almacenamiento local no es el camino a seguir aquí. DEV Community recomienda el uso de una política de cookies llamada SameSite para especificar las condiciones en las que se puede transmitir una cookie en una solicitud entre dominios. Una estricta política de SameSite, junto con el requisito de que las personas deben tener una versión del navegador que admita esta funcionalidad, ayudará a mantener seguros los tokens de sesión.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.