Zurücksetzen des ASP.NET-Kennworts - Sicherheitsprobleme?

Ich habe verschiedene Fragen zu diesem Problem gesehen, aber es gibt einige Fragen, die nicht gestellt wurden. Wenn der Benutzer sein Passwort vergisst, möchte ich, dass er es nur mit seiner E-Mail-Adresse zurücksetzen kann (d. H. Es gibt keine Sicherheitsfrage / -antwort). Das Passwort wird als gesalzener Hash gespeichert, sodass keine Wiederherstellung möglich ist. Stattdessen möchte ich, dass der Benutzer ein neues Passwort eingibt, nachdem er bestätigt hat, dass er einen Reset angefordert hat.

Eine übliche Methode, die erwähnt wurde, ist einfach:

1) Erstellen Sie eine zufällige Guid / Kryptographisch starke Zufallszahl

2) Senden Sie eine eindeutige URL mit der Zufallszahl an die E-Mail-Adresse des Benutzers

3) Nach Bestätigung wird der Benutzer aufgefordert, das Passwort zu ändern

Ist dies jedoch nicht offen für eineMITM Attacke? Wenn das Senden eines temporären Passworts über das Internet an eine E-Mail nicht sicher ist, was ist der Unterschied zwischen dem Senden einer eindeutigen URL, zu der der Angreifer navigieren kann? Habe ich irgendwo einen wichtigen Schritt verpasst, der dieses System sicherer macht (oder gibt es eine bessere Möglichkeit, das Passwort zurückzusetzen)?

Vielen Dank

Antworten auf die Frage(3)

Ihre Antwort auf die Frage