Quiero que los usuarios inicien sesión ingresando un correo electrónico y luego comprobando que controlan ese correo electrónico. Solo me importa que ellos controlen el correo electrónico y, por lo tanto, quiero evitar agregar otra contraseña al proceso si puedo hacer una transferencia segura al acceso de seguridad de un correo electrónico enviado a esa cuenta de correo electrónico (para eliminar una clase de ataque, no No se preocupa por las partes fundamentalmente confiables que pueden acceder al correo electrónico legítimamente, como la gente de TI en una organización).
Lo he pensado un poco y he desarrollado el siguiente esquema. Aquí hay muchas respuestas que me dan información sobre las partes, pero me preguntaba si este esquema específico, en su totalidad, es suficiente para que no tenga que usar mi propio sistema de contraseñas además de una verificación por correo electrónico. sistema, para evitar que terceros ilegítimos inicien sesión con una dirección de correo electrónico a la que no deben poder acceder.
- envíe la dirección de correo electrónico [email protected]
- generar un token aleatorio, por ejemplo, 'First-token' (¡solo imagina que es aleatorio!), con una caducidad de unos 2 minutos (configurable, solo un poco de tiempo corto)
- envíe un correo electrónico a [email protected], que contiene un enlace para enviar un GET a través de https a un punto final de inicio de sesión con la dirección de correo electrónico y el "primer token" como parámetros de consulta
- la primera vez que el extremo de inicio de sesión recibe el 'primer token' y '[email protected]', mientras que el 'primer token' aún no ha caducado, se genera otro token 'segundo-token' y se devuelve. El 'segundo token' se convierte en el token de acceso de mayor duración para [email protected], con un vencimiento mayor (días, quizás)
- si el punto final de inicio de sesión se encuentra con 'first-token' y '[email protected]' después de que 'first-token' haya caducado, se devuelve un error
Entonces, suponiendo que el usuario tenga su cuenta de correo electrónico protegida con una contraseña que sea difícil de descifrar / diseñar socialmente y todo lo demás, ¿qué tan seguro es este esquema de inicio de sesión?
Mi pensamiento inmediato es que, como he oído que el correo electrónico no es seguro y se puede interceptar como texto simple en el cable, esto no es seguro en absoluto. Sin embargo, no entiendo muy bien qué tan grande es el problema: ¿los correos electrónicos enviados a una cuenta pueden ser interceptados sin conocer los servidores específicos por los que pasará el correo electrónico? ¿Qué tan probable o incluso factible es que un correo electrónico específico sea dirigido, interceptado y leído si no lo es, por ejemplo, parte de la organización cuyo servidor de correo electrónico finalmente recibirá el correo electrónico?
Y, si no es seguro, entonces, ¿no significa eso que la mayoría de los usuarios olvidaron la contraseña? Te enviaré un enlace de descanso por correo electrónico. Los flujos en Internet son vulnerables a los ataques, ya que todos utilizan algo muy similar, o incluso más débil, que el esquema anterior. Solo estoy hablando de hacer de esta puerta trasera la puerta principal, pero de cualquier manera la puerta va a existir, ¿verdad? ¿Qué me lleva a creer que este esquema podría considerarse seguro en la práctica?
He pensado en posibles agujeros de seguridad en este esquema en la medida en que mi conocimiento sobre el tema lo permita, ¡realmente apreciaría la ayuda de los expertos!