¿Las mejores prácticas para las URL de inicio de sesión automáticas?

7

Una URL de inicio de sesión automático es un mecanismo mediante el cual un usuario existente pero desconectado de su sitio web o aplicación puede hacer clic en un enlace con un token aleatorio y ser reconocido automáticamente e iniciar sesión en su sitio web. A menudo, estos mecanismos se utilizan de otras maneras, como los restablecimientos de contraseñas.

Me pregunto cuáles son las medidas de seguridad de "defensa en profundidad" que sugiere al crear un mecanismo de "inicio de sesión automático" que reduce el riesgo de que la cuenta de usuario se comprometa.

¿Se puede hacer algo más allá de las medidas típicas?

  • Token con tiempo de caducidad corto
  • Token que solo se puede usar una vez
pregunta Alex Urcioli 06.03.2016 - 21:48
fuente

2 respuestas

3

Además de garantizar que un token sea de un solo uso, tenga una caducidad corta y que el token sea suficientemente aleatorio y largo:

  • Recomiendo limitar el número de tokens válidos en existencia en un momento dado (preferiblemente a 1). De esa manera, su exposición a códigos comprometidos se limita a un número fijo.
  • Tener el código en los parámetros de una solicitud GET expondrá el código en la mayoría de los registros HTTP (por ejemplo, el historial del navegador). Esto se mitiga principalmente al hacer que los códigos sean de un solo uso, pero lo ideal sería que solo les enviara el enlace de inicio de sesión sin el código incrustado y haga que copien el código del correo electrónico a la página de inicio de forma manual.
respondido por el thexacre 06.03.2016 - 22:33
fuente
0

Si es posible, infórmese de dónde proviene su usuario (geo-ubique sus direcciones IP). Si ese token de un solo uso se usa desde una ubicación inusual, no los autentifique.

De esta manera, es de esperar que pueda evitar que la cuenta se comprometa con el secuestro de la cuenta de correo electrónico, o MiTM de los correos electrónicos (que son texto sin formato, ¡recuerde!).

(¡Idealmente, no tendrías que implementar una función como esta, debido a los riesgos de seguridad!)

    
respondido por el Nick Malcolm 06.03.2016 - 23:02
fuente

Lea otras preguntas en las etiquetas