Einige Vorschläge:
Setzen Sie das Kennwort des Benutzers erst zurück, wenn es bestätigt wurde. Setzen Sie das Kennwort des Benutzers nicht sofort zurück. Setzen Sie es erst zurück, wenn der Benutzer auf einen Bestätigungslink klickt, der an seine vorregistrierte E-Mail-Adresse gesendet wurde.
CAPTCHA erforderlich. Wenn ein Benutzer das Zurücksetzen seines Kennworts anfordert, erzwingen Sie ihn ein CAPTCHA zu lösen, bevor Sie fortfahren. Dies soll verhindern, dass automatisierte Tools versuchen, vielen Benutzern Kummer zu bereiten, und den Benutzer dazu zwingen, zu beweisen, dass sie ein Mensch (kein Roboter) sind.
Zufälligkeit. Die zeitlich begrenzte Die URL zum Zurücksetzen des Kennworts sollte eine zufällige, nicht erratbare Komponente enthalten. Stellen Sie sicher, dass Sie Zufälligkeit in Kryptoqualität verwenden. Die Ausgabe von / dev / urandom
oder System.Security.Cryptography.RNGCryptoServiceProvider
wäre eine gute Wahl. Die Ausgabe von rand ()
oder random ()
oder System.Random
ist nicht zufällig genug und wäre eine schlechte Wahl. Eine GUID oder ein Zeitstempel ist nicht zufällig genug und wäre keine gute Wahl.
Geben Sie ein Zeitlimit an. Der Link zum Bestätigen des Zurücksetzens sollte nach einer angemessenen Zeit ablaufen: beispielsweise 24 Stunden . Der Link sollte nur einmal verwendbar sein und sofort ablaufen, sobald er verwendet wird.
Fügen Sie der E-Mail einen erläuternden Text hinzu. Möglicherweise möchten Sie dem Text einen erläuternden Text hinzufügen E-Mail, um zu erklären, warum die E-Mail gesendet wurde, falls jemand einen Reset für ein Konto anfordert, das nicht Ihr eigenes ist. Sie können einen Text wie "Jemand hat angefordert, dass das Passwort für Ihr Konto Benutzername
auf der Site
zurückgesetzt wird. Wenn Sie diese Anfrage gestellt haben, klicken Sie hier, um Ihr Passwort zu ändern. Wenn Wenn Sie diese Anforderung nicht gestellt haben, klicken Sie hier, um die Anforderung abzubrechen. "
E-Mail senden, nachdem das Kennwort zurückgesetzt wurde. Wenn das Kennwort erfolgreich zurückgesetzt wurde, senden Sie eine E-Mail an den Benutzer an Lassen Sie sie wissen, dass das Passwort geändert wurde. Fügen Sie das neue Passwort nicht in diese E-Mail ein.
Stornierungen überwachen. Sie können eine Logik einfügen, um die Häufigkeit zu überwachen, mit der Benutzer auf den Stornierungslink klicken, um anzuzeigen, dass sie keinen Reset angefordert haben. Wenn dies einen bestimmten Schwellenwert überschreitet, kann es nützlich sein, eine Warnung an die Systembetreiber zu senden. Wenn ein Stornierungslink für eine Anfrage nach dem Bestätigungslink besucht wird, ist dies ein möglicher Hinweis auf einen Angriff auf diesen Benutzer. Möglicherweise möchten Sie an diesem Punkt Maßnahmen ergreifen, z. B. ungültig machen das Passwort des Benutzers und fordern Sie ihn auf, sein Passwort erneut zurückzusetzen. (Dies ist eine Verteidigung gegen den folgenden Angriff: Der Angreifer erhält Zugriff auf das Postfach des Benutzers, fordert das Zurücksetzen seines Kennworts auf Ihrer Site an und besucht dann den Bestätigungslink. Wenn der Angreifer diese E-Mails nicht aus dem Posteingang des Benutzers löscht, Wenn der echte Benutzer dann seine E-Mail liest, klickt er möglicherweise auf den Stornierungslink, um auf mögliche Probleme hinzuweisen.)
Verwenden Sie HTTPS. Der Link sollte https (nicht http) verwenden :), um sich vor verschiedenen Angriffen zu schützen (z. B. Firesheep-Angriffe auf Benutzer, die von einem Internetcafé aus im Internet surfen).
Protokollieren Sie diese Vorgänge. Ich empfehle, alle derartigen Anforderungen zu protokollieren. Zusätzlich zur Protokollierung des Benutzernamens des Benutzers möchten Sie möglicherweise die IP-Adresse des Clients protokollieren, der eine E-Mail an den Benutzer gesendet hat, sowie die IP-Adresse des Clients, der den Rücksetzlink besucht hat.
Zusätzliche Lektüre. Vielleicht möchten Sie auch Troy Hunts hervorragenden Blog-Beitrag lesen, Alles, was Sie schon immer über das Erstellen einer sicheren Funktion zum Zurücksetzen von Passwörtern wissen wollten. Vielen Dank an @coryT für einen Link zu dieser Ressource.
Zuletzt sollten Sie die Nicht-Kennwortauthentifizierung in Betracht ziehen. Kennwörter haben viele Probleme als Authentifizierungsmechanismus, und Sie können andere Methoden zur Authentifizierung von Benutzern in Betracht ziehen, z. B. das Speichern eines sicheren dauerhaften Cookies auf ihrem Computer mit einem nicht erratbaren Wert Geheimnis, um sie zu authentifizieren. Auf diese Weise gibt es kein Passwort zum Vergessen und keine Möglichkeit für den Benutzer, einen Phishing durchzuführen registrierte Emailadresse). Dieses Umfragepapier bietet eine hervorragende Übersicht über viele Fallback-Authentifizierungsmethoden und ihre Stärken und Schwächen.