Restablecimiento de la contraseña de ASP.NET - problemas de seguridad?

He visto varias preguntas con respecto a este problema, pero hay un par de preguntas que no se han hecho. Si el usuario olvida su contraseña, me gustaría poder restablecerla solo con su dirección de correo electrónico (es decir, no hay preguntas / respuestas de seguridad). La contraseña se almacena como un hash salado, por lo que no es posible la recuperación. En su lugar, me gustaría que el usuario ingrese 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 número aleatorio Guid / Criptográficamente fuerte al azar

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

3) Cuando se confirma, se le pide al usuario que cambie la contraseña

Sin embargo, ¿no está esto abierto a unaMITM ¿ataque? 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 hacerlo y simplemente enviar una URL única a la que el atacante puede navegar? ¿He perdido un paso clave en algún lugar que haga que este sistema sea más seguro (o hay una mejor manera de restablecer la contraseña)?

Gracias

Respuestas a la pregunta(3)

Su respuesta a la pregunta