2011-01-12 14 views
6

Mi comprensión de la autenticación basada en tokens es que tras la autenticación (quizás sobre ssl), se pasa un token al usuario para una verificación de usuario barata sobre la marcha. Una implementación de esto sería generar una cookie que se pasa al usuario para la administración de la sesión.Seguridad de la autenticación basada en tokens

Pero, según tengo entendido, la autenticación basada en tokens (al menos a través de cookies) es susceptible al hombre en los ataques medios como la llama del fuego.

¿Hay otros métodos de implementación que eluden este importante problema de seguridad, o tengo un malentendido fundamental de tba?

Respuesta

10

Su comprensión es buena. Fundamentalmente, en términos de cómo la aplicación lo ve, un token también puede ser un nombre de usuario y contraseña. Si alguien tiene el token, pueden autenticarse en su aplicación. El objetivo principal en el caso de una cookie http es evitar filtrar el nombre de usuario y la contraseña en caso de que alguien obtenga la cookie mediante una vulnerabilidad de scripts entre sitios (XSS) o de otro modo. Sí, dadas las circunstancias correctas, pueden "reproducir" este token en la aplicación como un "hombre en el medio", pero no deberían poder averiguar el emparejamiento de nombre de usuario/contraseña, pero de nuevo, esto no está garantizado si el token el algoritmo de generación es débil, por ejemplo, si decidió codificar BASE64 el nombre de usuario y la contraseña concatenada y usar eso como el valor.

Normalmente, mantiene el token -> mapeo de usuario seguro en el lado del servidor. Por lo tanto, en última instancia, su seguridad se basa en mantener el token a salvo y garantizar que su duración esté controlada (por ejemplo, caduca y/o solo es válida cuando se le proporciona desde la misma IP que la utilizada por el proveedor original de las credenciales; sólo un ejemplo)

Espero que esto ayude,

-Oisin

+0

Muy bien, gracias Oisin. – Devin

Cuestiones relacionadas