Acceso instantáneo a la aplicación usando token en url

2

¿Es una buena idea dar acceso al sitio usando el token en url? Este token puede enviarse por correo electrónico, algunos sitios han restablecido la contraseña de esta manera, pero quiero dar acceso a todo el sitio (creo que tengo visto este tipo de sitios también.

Esta pregunta es similar a esta Inconvenientes de seguridad para usar el token de acceso de corta duración en el lado del cliente javascript . Pero el token puede estar fuera del navegador.

Entonces, mi pregunta es: ¿es peligroso tener tokens en vivo cortos (como los enviados en un correo electrónico para restablecer la contraseña) y es para tokens en vivo sin fecha de vencimiento (el usuario podrá encontrar el correo electrónico antiguo y usar el enlace en este correo electrónico? - con el mensaje de que podrá usar este URL en cualquier momento - y usar el sitio sin iniciar sesión.

    
pregunta jcubic 22.08.2012 - 01:39
fuente

3 respuestas

2

Probablemente no sea una buena idea enviar a un usuario un correo electrónico con un token de larga duración que permita el acceso a la cuenta de un usuario a perpetuidad. ¿Por qué quieres hacer eso? ¿Qué problema estás tratando de resolver?

En cambio, envíe al usuario un enlace de restablecimiento con un token de uso breve y de corta duración que le permita restablecer su contraseña. Consulte los consejos de este sitio sobre los tokens de restablecimiento de contraseña para obtener detalles sobre cómo hacerlo de la forma más segura posible.

    
respondido por el D.W. 22.08.2012 - 01:58
fuente
3

Esto se puede hacer (relativamente) de forma segura, pero hay que tener cuidado con algunas cosas.

Primero, debes asegurarte de que nadie pueda acceder al token de otra persona fácilmente (¡doh!). Esto es más difícil de hacer en la práctica de lo que parece. Por ejemplo, si está enviando por correo electrónico el token en texto sin formato (lo que hará), básicamente está pasando el token del servidor smtp al servidor smtp sobre el que no tiene control. EDITAR: pero lo mismo también se mantendría para tokens de una sola vez. El uso de SSL en su servidor también es una buena idea, ya que cifrará los encabezados de solicitud que incluyen la cadena secreta.

En segundo lugar, debes asegurarte de que la clave sea lo suficientemente larga para que los ataques de fuerza bruta tomen demasiado tiempo. Si combina esto con la detección de fuerza bruta en su servidor (el servidor web hiawatha puede hacer esto de forma inmediata) debería estar bastante seguro contra estos.

Tercero, ¡asegúrate de que la clave sea aleatoria ! Si está utilizando microtiempo, esto significa que un atacante puede hacer un cálculo acertado sobre el tiempo de registro de la víctima (la mayoría de los sitios web tienen algún tipo de función "registrado en"), y simplemente probar todos los hashes de las marcas de tiempo en ese momento. Esto reduce la cantidad de hashes para probar (¡para un solo usuario objetivo!) De poco práctico a solo un millón. Esto puede parecer mucho, pero con una PC y un tiempo de respuesta de 100 ms, solo toma un día. Recuerda, este es un ataque dirigido, lo que lo hace muy peligroso.

Otra opción que podrías implementar es usar tanto el hash del nombre de usuario como el hash de acceso en la URL. De esta manera, no es posible orientar a todos los usuarios a la vez.

OMI, cuando se tienen en cuenta estas cosas, obtener un inicio de sesión basado en token puede ser más seguro que un inicio de sesión "normal", donde las personas eligen contraseñas incorrectas y las escriben en hojas de papel en su escritorio.

    
respondido por el creativedutchmen 22.08.2012 - 17:42
fuente
1

Al usar tokens de larga duración, estás aliviando las cosas para los ataques de fuerza bruta, no sé cómo creas tus tokens, pero con tiempo de prueba de casi infinito y siendo algo tan simple como al intentar diferentes direcciones URL, parece fácil, en algún momento, entrar en una cuenta. Además, la URL podría ser olfateada.

Los tokens enviados al correo electrónico para restablecer la contraseña solo funcionan una vez (si la aplicación es segura ). Si no inutiliza estos tokens después de su primer uso, nuevamente está arriesgando las cuentas de sus usuarios a los problemas que describí anteriormente.

Entonces, para resumir, creo que es una mala idea tener tokens que duren más que un solo uso.

    
respondido por el eversor 22.08.2012 - 09:52
fuente

Lea otras preguntas en las etiquetas