He olvidado la contraseña: ¿cuál es el mejor método para implementar una función de recordatorio de contraseñas?

StackOverflow https://stackoverflow.com/questions/522967

Pregunta

Me pregunto cuál es el mejor método es para la creación de una función de contraseña olvidó en un sitio web. He visto unos cuantos por ahí, aquí están unos pocos o combinación de:

  • pregunta frase de contraseña / respuesta (1 o más)
  • enviar un correo electrónico con la nueva contraseña
  • en la pantalla dan nueva contraseña
  • confirmación a través de correo electrónico: debe hacer clic en enlace para obtener una nueva contraseña
  • página requiere usuario que introduzca una nueva contraseña

¿Qué combinación o pasos adicionales añadirías a una función Olvidó su contraseña? Me pregunto acerca de cómo solicitar la nueva contraseña y la forma en que terminan siendo la misma.

Me estoy operando en el principio de que la contraseña no puede ser recuperada; una nueva contraseña debe dar / generada.

Editar Me gusta lo que dijo acerca de Cory no se muestra si existe el nombre de usuario, pero me pregunto lo que desea mostrar en su lugar. Estoy pensando en la mitad del problema es que el usuario olvidó qué dirección de correo electrónico que utilizan, que presentan algún tipo de "no existe" mensaje es útil. ¿Soluciones?

¿Fue útil?

Solución

  1. personalmente me envíe un correo electrónico con un enlace a una página de corto plazo que les permite establecer una nueva contraseña. Hacer que el nombre de la página de algún tipo de UID.
  2. Si eso no le gusta a usted, entonces el envío de una nueva contraseña y obligarlos a cambiar en el primer acceso haría también.

La opción 1 es mucho más fácil.

Otros consejos

Algunas preocupaciones importantes de seguridad:

  • Una pregunta / respuesta frase de contraseña en realidad disminuye la seguridad, ya que por lo general se convierte en el eslabón más débil en el proceso. A menudo es más fácil de adivinar la respuesta de alguien de lo que es una contraseña -. Especialmente si las preguntas no son cuidadosamente seleccionados
  • Suponiendo correos electrónicos operan como el nombre de usuario en el sistema (que por lo general se recomienda para una variedad de razones), la respuesta a una solicitud de restablecimiento de contraseña no se debe indicar si se ha encontrado una cuenta válida. Simplemente se debe indicar que un correo electrónico de solicitud de contraseña ha sido enviada a la dirección indicada. ¿Por qué? Una respuesta que indica que un correo electrónico no / no existe permite a un hacker para cosechar una lista de cuentas de usuario mediante la presentación de múltiples solicitudes de contraseña (normalmente a través de un proxy HTTP como suite de eructo) y observando si se encuentra que el correo electrónico. Para proteger la cosecha de inicio de sesión debe asegurar que no haya entrada / auth funciones relacionadas proporcionan ninguna indicación de cuando el correo electrónico de un usuario válido ha sido ingresado en un inicio de sesión / pass restablecer formulario.

Para más antecedentes, partida de los hackers Manual de aplicaciones Web . Es una excelente lectura en la creación de modelos de autenticación seguros.

Editar : En cuanto a la pregunta en su edición - me gustaría sugerir:

  

"Un correo electrónico de solicitud de contraseña ha sido   enviado a la dirección que proporcionó. Si   un correo electrónico no llega en breve,   por favor revise su carpeta de correo no deseado. Si no   correo electrónico llega, entonces no existe ninguna cuenta   con el correo electrónico que proporcionó ".

Hay una compensación que se hace aquí entre la facilidad de uso y seguridad. Hay que equilibrar esta basada en el contexto - es la seguridad lo suficientemente importante para usted y sus usuarios para justificar este inconveniente?

Enviar correo electrónico con la nueva contraseña.

forzar un cambio de contraseña cuando llegan y clave en la nueva contraseña.

Esto asegura que la persona que quería que la contraseña será la única consiguiendo solamente en la cuenta.

Si se olfateó el correo electrónico, alguien podría entrar a la cuenta (por supuesto), pero la verdadera fiesta descubrirá esto inmediatamente (como su contraseña que acaba de enviar ellos no funciona).

También enviar confirmaciones de cambios de contraseña a los usuarios.

Si alguien consigue la nueva contraseña, y luego un correo electrónico diciendo "gracias por el cambio de la contraseña", que van a ser bastante desconcertado y hablan con un administrador si no lo hacían.

Uso del correo electrónico de verificación / contraseña de enlace de restablecimiento le dará una mejor seguridad. Si nos fijamos en torno a esta es la forma en la mayoría de los sitios web lo hacen y las personas están muy acostumbrados a esta verificación, así que recomiendo el uso de este tipo de autenticación.

Me gustaría pensar Opción (de gbrandt) 2 sería un gran método si se combina con un poco de información personal que ya tiene para el usuario. es decir la fecha de nacimiento.

Cuando el usuario solicita una nueva contraseña (reset) a través de entrar en su dirección de correo electrónico, también tiene que introducir una fecha de nacimiento correcta (o algo más) antes del restablecimiento de la contraseña y una nueva se enviará por correo electrónico al usuario.

Sólo aquellos que lo conocen bien, posiblemente, le puede molestar al restablecer su contraseña! No puede ser un extraño o un bot

Tras 5 o 7 mala dirección de correo electrónico y fecha de nacimiento del usuario combinaciones enviada por correo electrónico que su contraseña ha sido solicitada debe reiniciarse y ha fallado debido a una credencial incorrecta. A continuación, restablecer la contraseña de esa cuenta está suspendida por 24 horas o en cualquier periodo deseado.

(si hay demasiados usuarios en contacto con el webadmin con respecto a este correo electrónico él sabrá que alguien está tratando de alcanzar maliciosamente información de su página web / app)

¿Qué piensan ustedes?

Opción 1. es no una buena idea, ya que por lo general se convierte en su fácil de adivinar por otros. correo electrónico personal de Sarah Palin (Yahoo creo) fue hackeado de esta manera por un tercero.

Las otras opciones son mejores y los mensajes anteriores se han indicado los detalles.

La idea de que estaba pensando era firmar los datos en el enlace que se envía al usuario. Entonces, cuando el usuario hace clic en el enlace y el servidor recibe la llamada, el servidor también tiene la parte encriptada y puede validar que los datos estaban sin tocar.

He puesto en marcha un proyecto Java para este caso de uso. Es en GitHub, de código abierto. Responde a su pregunta ... perfectamente implementado en Java.

En cuanto a la enlace del correo electrónico -. Genera el enlace, además de lo valida el uso de éste

Hay explicación para todo (y si falta algo - que me haga saber ...)

Tenga una mirada: https://github.com/OhadR/Authentication-Flows

Vea una de demostración aquí .

Esta es la web de la aplicación cliente que utiliza los flujos de autenticación, con el README con todas las explicaciones. que se dirige la ejecución: https://github.com/OhadR/ OAuth2-muestra / árbol / maestro / autenticación flujos

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top