net Website, ich möchte vergessen Passwort implementieren. Ich verwende folgende Schritte
Bitte helfen Sie mir, ob ich richtig mache oder nicht?
Gibt es einen anderen sicheren Mechanismus für denselben?
[BEARBEITEN] Danke, ich habe deine Antwort erhalten. Wirklich, das ist ein sicherer Mechanismus. Aber hier habe ich wenig Zweifel
Bitte helfen?
Ich kann sehen, warum Sie eine CAPTCHA wollen, aber ich würde einen anderen Ansatz wählen.
Für diejenigen, die glauben, dass Sie dem Nutzer sagen sollten, wo die E-Mail verschwunden ist, stimme ich nicht zu. Dies ist ein "Informationsleck", auch wenn Sie es auf den Domainnamen beschränken. Zum Beispiel, ich habe mich bei JeffAtwoodEatsBabies.com als Blowdart registriert. Wenn Jeff ein Passwort-Reset für mich angefordert hätte und du die Registrierungs-Domain angezeigt hättest, würde er idunno.org sehen. Dies ist meine persönliche Domäne und somit würde Jeff wissen, dass der Blowdart-Benutzer tatsächlich ich bin. Das ist ein schlechtes Ding. Ich sollte mich nicht mit Hotmail oder Google Mail oder so registrieren müssen, um mich vor Ihrem Code zu schützen, der eine E-Mail-Domain für alle anzeigt.
Außerdem sollten Sie keine Fehlermeldungen anzeigen. Egal, was passiert, ein Benutzername ist nicht registriert oder es wurden zu viele Anfragen gemacht oder der Himmel ist gefallen. Sie sollten dem Benutzer mitteilen, dass das Passwort zurückgesetzt wurde. Das Informieren eines Benutzers, dass ein Konto nicht existiert, führt zu mehr Informationslecks.
Eine letzte Sache, die Sie tun können, ist ein CSRF-Token auf der Seite zum Zurücksetzen der Anfrage hinzuzufügen, damit es nicht von anderen Websites aus gesteuert werden kann.
Folge
Also, um Ihre weiteren Fragen zu beantworten.
Es gibt viele Möglichkeiten, wie dies implementiert wurde. Wie Sie bereits gesagt haben, ist das Generieren eines neuen Passworts und das Senden an die registrierte E-Mail-Adresse eine Methode. Ich würde jedoch nicht vorschlagen, dass Sie diesen Weg gehen, da mein Passwort jedes Mal zurückgesetzt wird, wenn jemand versucht hat, mein Passwort zu erraten.
Stattdessen ist das Beste, was ich bis jetzt gesehen habe, einfach die registrierte E-Mail mit einem Link zu mailen, der einen Passwort-Reset-Prozess startet. Sie können den Benutzer sogar wissen lassen, welche E-Mail-Adresse überprüft werden soll, indem eine maskierte Version seiner E-Mail-Adresse angezeigt wird, die bei der Registrierung verwendet wird:
Eine E-Mail wurde an
********
@hotmail.com gesendet. Bitte überprüfen Sie Ihren Posteingang, um fortzufahren.
Achten Sie darauf, diejenigen von uns in Betracht zu ziehen, die vielleicht vergessen haben, mit welcher E-Mail-Adresse sie registriert wurden - normalerweise sind einige Sicherheitsfragen eine gute Möglichkeit, diese Informationen verfügbar zu machen.
Das habe ich kürzlich gemacht. Wenn der Benutzer seinen Benutzernamen oder seine E-Mail-Adresse eingibt, generieren wir ein eindeutiges Token und senden es als Teil eines Links an sie. Nach Erhalt dieser E-Mail klicken sie auf den Link und werden automatisch angemeldet. Sie werden zum Bildschirm "Mein Konto" weitergeleitet und aufgefordert, ihr Passwort zurückzusetzen.
Natürlich hängt dies zu 100% von der Sicherheit des E-Mail-Clients ab, aber aus Usability-Sicht ist es schwer zu übertreffen.
Sie sollten die Antwort auf die Frage überprüfen: Kann irgendjemand Referenzen zur Implementierung von Password-Reset-Mechanismen für Webanwendungen bereitstellen? von DW zu security.stackexchange.
Es ist die vollständigste Antwort, die ich zu diesem Thema gefunden habe. Ich empfehle Ihnen auch, diesen Artikel zu lesen: Alles, was Sie schon immer wissen wollten Erstellen einer sicheren Kennwortzurücksetzungsfunktion