4 Stimmen

Passwort-Wiederherstellung ohne Versand des Passworts per E-Mail

Also, ich habe mit asp:PasswordRecovery und habe festgestellt, dass ich es aus mehreren Gründen nicht mag:

1) Das Passwort von Alice kann zurückgesetzt werden, ohne dass sie Zugriff auf ihre E-Mail hat. Eine Sicherheitsfrage für das Zurücksetzen von Passwörtern entschärft dies zwar, stellt mich aber nicht wirklich zufrieden.

2) Alices neues Passwort wird im Klartext an sie zurückgeschickt. Ich würde ihr lieber einen speziellen Link zu meiner Seite schicken (z. B. eine Seite wie example.com/recovery.aspx?P=lfaj0831uefjc), über die sie ihr Passwort ändern kann.

Ich könnte mir vorstellen, dass ich dies selbst tun könnte, indem ich eine Art Tabelle mit auslaufenden Seiten zur Wiederherstellung von Passwörtern erstelle und diese Seiten an Benutzer schicke, die eine Rücksetzung beantragt haben. Irgendwie könnten diese Seiten auch die Passwörter der Benutzer im Hintergrund ändern (z. B. indem sie manuell zurückgesetzt werden und dann der Text des neuen Passworts verwendet wird, um das Passwort zu ändern, da ein Passwort nicht geändert werden kann, ohne das alte zu kennen). Ich bin mir sicher, dass andere dieses Problem schon einmal hatten, und diese Art von Lösung erscheint mir ein wenig umständlich. Gibt es einen besseren Weg, dies zu tun?

Eine ideale Lösung verletzt die Kapselung nicht, indem sie direkt auf die Datenbank zugreift, sondern verwendet stattdessen die vorhandenen gespeicherten Prozeduren innerhalb der Datenbank... obwohl das vielleicht nicht möglich ist.

4voto

Stephen C Punkte 665668

Ich implementiere derzeit ein Open-Source Benutzerverwaltungssystem auf Spring + SpringSecurity, und hier ist, wie ich das Problem des verlorenen Passworts angehen werde.

  1. Das Benutzerkonto muss eine vorregistrierte E-Mail-Adresse haben.
  2. Um eine Rücksetzung anzufordern, gibt der Nutzer seinen Kontonamen in ein Formular ein.
  3. Ein vorübergehender "Rücksetzungscode" wird generiert und an das Konto angehängt und dem Nutzer per E-Mail in Form eines Hyperlinks zugeschickt.
  4. Nach Erhalt der E-Mail klickt der Nutzer auf den Link, der ihn zu einer Seite führt, auf der er sein neues Passwort eingeben kann.
  5. Bevor das neue Passwort akzeptiert wird, wird der Rücksetzungscode (vom Link) mit dem gespeicherten Code verglichen, um sicherzustellen, dass er korrekt ist und nicht abgelaufen ist.

Dadurch wird vermieden, dass ein Passwort (im Klartext) in einer E-Mail-Nachricht gesendet wird. Und es schützt auch davor, dass eine Person das Passwort einer anderen Person zurücksetzt, nur um sie zu ärgern, denn das Zurücksetzen des Passworts erfolgt erst, nachdem der Link benutzt worden ist.

Es setzt jedoch voraus, dass das E-Mail-Konto des Benutzers sicher ist und die E-Mails während der Übertragung nicht abgehört werden. Für einige Anwendungen ist dies vielleicht ein inakzeptables Risiko.

Ein weiterer Teil der Gleichung ist, dass Sie sehr vorsichtig sein müssen, wenn Sie die registrierten E-Mail-Adressen eines Benutzers ändern. Zumindest muss der Benutzer sein aktuelles Kennwort mit der Aufforderung zur Adressänderung eingeben, um zu verhindern, dass er über unbeaufsichtigte Anmeldesitzungen gehackt wird.

2voto

meme Punkte 11523

Ich empfehle, eine zusätzliche Kontrollebene hinzuzufügen, hier sind einige Optionen zur Auswahl.

  1. Zunächst können Sie die IP-Adresse des Antragstellers in einer Datenbank speichern. Wenn der Antragsteller dann auf den Link zum Zurücksetzen klickt, vergleichen Sie diese Adresse mit der IP-Adresse seines aktuellen Computers und setzen bei Übereinstimmung das Passwort zurück. Wenn die E-Mail abgefangen wird, muss die Person, die versucht, das Passwort zurückzusetzen, eine übereinstimmende IP-Adresse haben.
  2. Verwenden Sie ein Cookie und speichern Sie einen eindeutigen Wert, vielleicht eine GUID, einen MD5-Hash oder etwas Ähnliches. Wenn der Benutzer also eine Anfrage zum Zurücksetzen des Passworts stellt, wird ein Cookie auf seinem Computer und in der Datenbank gespeichert. Wenn der Benutzer auf den Link klickt, muss das lokale Cookie mit dem Datenbankwert übereinstimmen, sonst kann er sein Passwort nicht zurücksetzen.

Im Allgemeinen bin ich absolut dagegen, ein Kennwort per E-Mail zu versenden, daher gefällt mir die Option, das Kennwort über einen Link zurückzusetzen, besser als ein neues Kennwort im Klartext.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X