2010-03-01 11 views
8

¿Cuál es la forma más segura de manejar contraseñas olvidadas/restablecer contraseñas? ¿Debo enviar la contraseña por correo electrónico al usuario? Si es así, ¿los obligas a reiniciarlo? ¿O les permite reiniciarlo de inmediato (sin enviar un correo electrónico) y requerir otra información para verificar que sean ellos? ¿O hay un método mejor?Formas seguras para restablecer la contraseña o dar una contraseña anterior

+0

Hubo una gran discusión sobre este mismo tema recientemente: http://stackoverflow.com/questions/2283937/how-should-i-ethethical-approach-user-password-storage-for-later-plaintext-retriev –

+0

Si su sistema tiene la capacidad de buscar la contraseña de un usuario y enviársela por correo electrónico, ha hecho algo muy incorrecto. Nunca deberías poder buscar la contraseña de un usuario. Solo debería poder actualizar una contraseña entrante y compararla, o cambiarla y enviar la nueva contraseña. – Scott

Respuesta

14

No se puede enviar por correo electrónico la contraseña para el usuario, ya que no lo sepa. Has "hashed" por applying something like PBKDF2 or bcrypt para el almacenamiento, ¿verdad?

Si restablece la contraseña sin confirmarlo con el propietario de la cuenta, un atacante puede negarle acceso, por lo menos hasta que revise su correo electrónico, utilizando la dirección de correo electrónico de la víctima para solicitar un restablecimiento.

Un método lo suficientemente seguro para muchas aplicaciones es enviar por correo electrónico un enlace al propietario de la cuenta, que contiene un gran número generado al azar. Este token solo debe ser válido por un tiempo limitado. Si el propietario desea restablecer su contraseña, hace clic en el enlace y esto los autentica como propietario de la cuenta. El propietario de la cuenta puede entonces especificar una nueva contraseña.

0

Supongo que lo vas a hacer programáticamente? ¿O es una pregunta para Server Fault?

Una de las formas es enviar un enlace a la cuenta de correo electrónico del usuario. Él/ella hace clic en el enlace y se le redirige a su formulario web seguro donde restablecen la contraseña.

no por correo electrónico la contraseña para el usuario

5

No debe enviar contraseñas por correo electrónico. Aquí hay un proceso paso a paso que he usado:

  1. Ofrezca a los usuarios la opción de restablecer la contraseña.
  2. Esta opción guarda un token único para un usuario. El token finalmente expira (horas, días o días).
  3. Se envía un enlace por correo electrónico al usuario que incluye el token.
  4. El usuario hace clic en el enlace enviado por correo electrónico.
  5. Si el token existe y no ha caducado, el enlace carga un nuevo formulario de contraseña. Si no es, no cargue el nuevo formulario de contraseña.
  6. Una vez que el usuario establece una nueva contraseña, elimine el token y envíele un correo electrónico de confirmación.

Hasta que se establezca la nueva contraseña, la contraseña anterior debe permanecer activa. No te olvides de hash y sal las contraseñas!

Cuestiones relacionadas