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.