¿Alguna forma de combinar la confirmación de contraseña retrasada con la posibilidad de que los usuarios naveguen lejos?

0

Queremos configurar un flujo como este:

  1. Creamos una cuenta para un usuario de alto valor desde nuestra sección de administración
  2. Reciben un correo electrónico automatizado que contiene los datos de inicio de sesión de nuestro sitio de alguna forma
  3. Siguen el enlace, confirman su cuenta y ven un formulario que les pide de manera prominente que restablezcan su contraseña
  4. Esto parece ser un poco complicado: si se alejan antes de configurar su contraseña y vuelven más tarde (habiendo salido potencialmente de otra máquina, etc.) queremos que aún puedan acceder a su cuenta sin tener que solicitar un restablecimiento de contraseña

Por lo que puedo ver, no hay una forma segura de hacerlo, ya que requeriría al menos un token de inicio de sesión de uso repetido para enviarlos por correo electrónico.

Así que mis preguntas son:

1) ¿He perdido alguna forma de hacer esto de forma segura? (con disculpas a theI3I, quien respondió una pregunta similar que publiqué sin el cuarto requisito aquí )

2) Un enfoque que hemos discutido es enviarles un token de inicio de sesión reutilizable con fecha de caducidad, para que a) al menos no se rompa por un ataque de arco iris, yb) minimizamos la ventana de vulnerabilidad. Sé que esto no es lo ideal, pero (si hay una manera significativa de responder a esta pregunta) ¿qué tan grande es el riesgo? ¿Importa mucho cuánto tiempo es el período de uso? ¿Y hay alguna forma de minimizar el riesgo que no sea simplemente reducir el período de uso (o también una forma imperfecta pero mejor de lograr el mismo efecto deseado)?

Si es relevante, estamos usando un backend Rails / Devise.

Gracias de antemano.

    
pregunta Arepo 06.02.2017 - 22:56
fuente

1 respuesta

1

Puede enviar un enlace recién generado cuando el usuario navega fuera de la página, automáticamente (pronto aprenderán a dejar de hacer eso cuando tengan 30 correos electrónicos). enviar, digamos una vez al día.

O bien, podría mantener el token abierto hasta que se establezca la contraseña, lo que podría dejar el token fuera por tiempo indefinido. Lo que como dices, está lejos de ser ideal.

O puede tomar el segundo enfoque, pero agregue una fecha de vencimiento, en lugar de que en el momento en que el visitante use el enlace, sea válido hasta que se establezca la contraseña o, digamos, que hayan pasado 3 días. A continuación, puede enviar un nuevo enlace o solicitar la activación manual o el restablecimiento de la contraseña. Personalmente, preferiría esta, ya que si el correo electrónico nunca se recibe por cualquier motivo (problemas de la bandeja de entrada / del servidor), el enlace de activación no desaparece para siempre. Esto podría luego caducar luego de otras unidades de tiempo arbitrarias para abandonar y bloquear la cuenta, en lugar de mantener la cuenta pendiente indefinidamente.

En última instancia, depende de tu apetito por el riesgo, y de lo que ves como el modelo de amenaza. De cualquier manera, no será perfecto desde el punto de vista de la seguridad, ya que es muy probable que el correo electrónico se envíe en texto claro en cualquier punto de su viaje.

No veo una solución perfecta para tu problema, no :(

    
respondido por el user2867314 07.02.2017 - 18:04
fuente

Lea otras preguntas en las etiquetas