würden Die wichtigsten Schritte sein:
- Geben Sie eine „Passwort vergessen“ Seite, wo der Benutzer ihre E-Mail-Adresse
- sehen die eingegebene Adresse aber nicht sagen, dass dem Benutzer irgendwelche Daten eingeben kann. Geben Sie keine Nachricht wie "E-Mail-Adresse nicht gefunden" aus, da ein böswilliger Benutzer gültige E-Mail-Adressen nachschlagen könnte. Geben Sie ihnen eine Nachricht wie "Sie erhalten einen Link, um Ihr Passwort zurückzusetzen, wenn die eingegebene E-Mail-Adresse registriert ist".
- Erstellen Sie eine eindeutige eindeutige Zufalls-ID, um sie dieser Zurücksetzungsanforderung zuzuordnen. Z.B. Verwenden Sie einen kryptografischen RNG, der vom Framework bereitgestellt wird, und kombinieren Sie ihn mit etwas Einzigartigem, wie z. eine GUID
- Speichern Sie diesen eindeutigen Bezeichner zusammen mit dieser Rücksetzanforderung z. eine Tabelle in Ihrer Datenbank und legen Sie einen Zeitstempel zu diesem Datensatz. Das ist wichtig, da Sie möchten, dass der Benutzer sein Passwort nur innerhalb eines festen Zeitrahmens zurücksetzen kann.
- Senden Sie eine E-Mail mit diesem eindeutigen Bezeichner als Abfrageparameter in einen Link zu Ihrer Anwendung. Z.B. https://yourapp.com/pwreset/?requestID=7392af1747ce3781
- Fechten Sie den requestID-Parameter an Ihrem pwreset-Controller ein und suchen Sie ihn in Ihrer Datenbank auf. Wenn die Anfrage innerhalb eines angemessenen Zeitrahmens auf der Basis des ursprünglichen Anforderungs-Zeitstempels eingeht, lassen Sie den Benutzer sein Passwort zurücksetzen.
- Löschen Sie erfolgreiche Anforderungssätze aus Ihrer Datenbank, so dass ein gesendeter Pw-Reset-Link nur einmal verwendet werden kann. Und löschen Sie regelmäßig abgelaufene Datensätze.
Verwenden Sie dies als Ausgangspunkt. Da ich kein Crypto-Experte bin, darf man sich diesen Ansatz einmal ansehen;)
Danke. Arbeiten daran. –