Pregunta

he visto varias preguntas con respecto a este tema, pero hay un par de preguntas que no se han pedido. Si el usuario olvida su contraseña, me gustaría que sean capaces de restablecerlo con sólo su dirección de correo electrónico (es decir, no hay seguridad de pregunta / respuesta). La contraseña se almacena como un hash salado, así que no hay recuperación posible. En su lugar, me gustaría al igual que el usuario introduzca una nueva contraseña después de confirmar que han solicitado un restablecimiento.

  

Un método común que se ha mencionado es simplemente:

     

1) Crear un GUID aleatorio / criptográficamente fuerte número aleatorio

     

2) Enviar una URL única que contiene el número aleatorio de correo electrónico del usuario   Dirección

     

3) Cuando se confirma, el usuario se le pide a cambio de contraseña

Sin embargo, no es esta abierto a un ataque MITM? Si el envío de contraseñas temporales a través de Internet a un correo electrónico es inseguro, ¿cuál es la diferencia entre hacer eso y simplemente enviando una URL única que el atacante puede navegar a? ¿Me he perdido en algún lugar de una llave de paso que hará que este sistema sea más seguro (o hay una mejor manera de restablecer la contraseña)?

Gracias

¿Fue útil?

Solución

Si construye su picadillo correctamente, la URL tendrá que venir de la dirección IP que solicita el restablecimiento. Esto requeriría la MITM a falsificar la IP y / o cabeceras de falsificar. Aunque esto es posible, la más singular se puede identificar el hash para el sistema en cuestión, más difícil se hace "end-around" el hash.

También se recomienda que el GUID ser un hash unidireccional de ciertos criterios. También es posible que los datos del sistema cifrar en la solicitud utilizando una clave pública que una privada desbloquea clave para que cuando se hace clic en la URL, este mismo público los datos del sistema cifrados deben acompañar el hash, y el único sistema capaz de desencriptar estos valores sería la clave privada que tuvo lugar en el servidor. Básicamente un accesorio de pseudo-PKI para el hash.

Otros consejos

Sus medios de autenticación del usuario es un secreto compartido (la contraseña).

Si el usuario olvida ese secreto, que necesitan una manera de establecer un nuevo secreto compartido. No importa qué forma se va sobre él, usted todavía tiene el problema de la autenticación del usuario con el fin de compartir ese nuevo secreto.

Si lo único que se sabe acerca del usuario que podría ser utilizado para autenticar ellos es su dirección de correo electrónico, entonces usted necesita alguna manera de confirmar que el usuario que solicita un restablecimiento está en control de esa dirección de correo electrónico.

Y el hacer eso única manera hasta ahora es un secreto correo electrónico a esa dirección de correo electrónico y comprobar si la recibieron.

Lo que siempre va a estar abierto a un ataque MitM suficientemente astuto.

La razón usted no envía una contraseña temporal es para evitar el problema de "el usuario no puede ser molestado en cambiar y así sigue usando la contraseña temporal inseguro en lugar de su propio seguro."

Para mitigar el riesgo de un hombre en medio del ataque utilizo las siguientes medidas:

  • Una solicitud de restablecimiento puede ser utilizado sólo una vez.
  • Si una solicitud de reposición no se utiliza, que expira después de una hora.
  • Todas las solicitudes de restablecimiento se registran de forma permanente si se ha completado o en última instancia, expiró.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top