Leí esta respuesta y encontré un comentario que insiste en no enviar la contraseña por correo electrónico:
las contraseñas no deberían poder recuperarse por correo electrónico, lo odio. Significa que mi contraseña se almacena en texto plano en alguna parte. solo debe reiniciarse.
Esto me plantea la cuestión de manejar la opción ¿Olvidé mi contraseña?
A cualquier costo, la contraseña sin formato debe mostrarse en cualquier interfaz de usuario para que el usuario pueda leerla. Entonces, ¿cuál sería la forma de manejar "Olvidé mi contraseña"
Respuestas:
Un buen diseño de aplicación no podrá recuperar explícitamente una contraseña de usuario. Esto se debe a que generalmente se almacena después de ejecutarse a través de algún tipo de hash, que es una operación unidireccional.
La mejor manera de manejar la contraseña perdida es realizar un restablecimiento, enviar un correo electrónico a la cuenta de los usuarios con un enlace con un parámetro generado agregado que lo identifica como un restablecimiento de contraseña válido para la cuenta en cuestión. En este punto, pueden establecer una nueva contraseña.
Esto supone que tiene una dirección de correo electrónico de usuario en el archivo.
fuente
No debe almacenar la contraseña principal del usuario como texto sin formato, pero PUEDE almacenar una contraseña temporal como texto sin formato, es decir
el usuario restablece la contraseña -> se crea la contraseña temporal -> la contraseña temporal se envía por correo electrónico -> el usuario se ve obligado a cambiar la contraseña en el próximo inicio de sesión (la nueva contraseña no puede ser una contraseña temporal tal vez)
fuente
El comentario está en contra de enviar la contraseña original por correo electrónico, no enviar nada por correo electrónico. Si la institución puede enviar la contraseña original, eso significa que la tienen, y eso es un problema de seguridad. El comentarista no argumentó en contra de enviar una contraseña por correo electrónico, porque eso es bastante necesario en la mayoría de los casos.
La forma correcta es asignar una nueva contraseña que se pueda usar una vez, por cualquier motivo. Tal vez ya esté marcado como caducado por el sistema, tal vez solo inicie sesión en una página para cambiar la contraseña que se genera dinámicamente una vez y solo una vez, lo que sea.
fuente
Lo que más me gusta es que la aplicación envíe un correo electrónico al usuario en la dirección de correo electrónico registrada con un enlace único válido durante X horas que proporciona una página "Cambiar contraseña".
Luego, el usuario puede establecer la contraseña como desee sin arriesgarse a que sea puesta en un correo electrónico.
fuente
El proveedor de mi tarjeta de crédito tiene una opción de "contraseña olvidada" que le hace algunas preguntas de seguridad (esto no es inmensamente seguro en sí mismo, pero muchos bancos lo hacen) y luego genera un nuevo código y le da la mitad en la pantalla y envía correos electrónicos la segunda mitad tú. De esa manera no puede romper la cuenta sin tener acceso tanto a la página web como a la dirección de correo electrónico.
He preguntado un poco sobre esto desde una perspectiva de usabilidad hace un tiempo.
fuente