Andreas Korthaus: Passwort-vergessen Funktion

Hallo!
ich habe eine Tabelle mit Usern, darin steht u.A. der Username, email und ein Passwort.
Jetzt habe ich mir Gedanken über eine Passwort-vergessen -Funktion gemacht. Im prinzip nicht schwe, hab auch mal eine gebastelt, aber ich bin mir noch nicht ganz darüber im klaren, wie man das am besten macht.
Ich habe das jetzt wie folgt gemacht. Wenn man das passwort vergessen hat, gibt man in ein Formular seine Email-Adresse ein, dann wird geprüft ob die Adrresse genau einmal vorkommt, wenn ja wird ein neues Passwort generiert, in der DB gespeichert und dem User zugesendet. Der kann sich dann mit seinem Username und dem neuen Passwort einloggen, das dann ändern....
Jetzt frage ich mich nur, wenn jetz ein User, sei es aus Versehen, oder wie auch immer sich 2x angemeldet hat, geht es ja nicht mehr, da 2 Datensätze gefunden werden.
Daher müßte man außer der Email-Adresse auch noch den Usernamen vorher eingebe, denn der ist eindeutig.

Dann hate ich noch mit dem Gedanken gespielt, lieber eine kpl. Zugangsdaten-vergessen Funktion zu basteln, d.h. nach der email-Adresse zu selektieren und dann sowohl username als auch das generierte neue passwort zu verschicken.

Dann hätte ich wieder das problem, dass ich etl doppelte email-Adressen habe, aber dagegen könnte ich ja beim neuanmelden den alten Datensatz löschen... aber ob das so gut ist?

Was haltet Ihr davon? Ich weiß im Augenblick nicht so recht, welches die beste Alternative für den Alltag ist. Was meint Ihr?

Viele Grüße
Andreas

  1. Hi,

    Wenn man das passwort vergessen hat, gibt man in ein Formular seine Email-Adresse ein, dann wird geprüft ob die Adrresse genau einmal vorkommt,

    unsicher. Die Mailadresse hat man _vorher_ im Account hinterlegt - ausschließlich an diese wird gesendet.

    wenn ja wird ein neues Passwort generiert, [...]

    Ja, das hat nämlich den Vorteil, dass Du das Passwort gecryptet speichern kannst.

    Jetzt frage ich mich nur, wenn jetz ein User, sei es aus Versehen, oder wie auch immer sich 2x angemeldet hat, geht es ja nicht mehr, da 2 Datensätze gefunden werden.

    Richtig. Aus diesem Grund _musst_ Du die Angabe des Loginnamens verlangen. Wenn er diesen auch nicht mehr weiß, muss er sich an Dich persönlich wenden, und Du entscheidest mit Deinem Menschenverstand, ob er glaubhaft ehrliche Absichten hat. Es ist nicht schlecht, "menschliche" Prüfungsmechanismen vorzusehen; z.B. die Frage nach dem Mädchennamen der Mutter oder anderen individuellen Daten. Wichtig: Diese Daten zu kennen ist kein _Beweis_, sondern nur ein Indiz.

    Cheatah

    1. Hallo Cheatah!

      Wenn man das passwort vergessen hat, gibt man in ein Formular seine Email-Adresse ein, dann wird geprüft ob die Adrresse genau einmal vorkommt,

      unsicher. Die Mailadresse hat man _vorher_ im Account hinterlegt - ausschließlich an diese wird gesendet.

      Kommt ja aufs selbe raus, wenn die Adresse in der DB 0 mal oder mehr als 1 mal vorkommt wird eh nicht versendet! In jedem Datensatz steht eine Email-Adresse, da das vorher für die Anmeldung notwenig war, und der Datensatz wird auch nur angelegt, wenn die Email-Adresse richtig war, denn  beim Anmelden wird dem User an die angegebene Adresse eine Mail mit den Zugangsdaten geschickt, und wenn da was nicht stimmte wird er erst gar nicht aktiviert!

      wenn ja wird ein neues Passwort generiert, [...]

      Ja, das hat nämlich den Vorteil, dass Du das Passwort gecryptet speichern kannst.

      ja, das mache ich ja, daher auch ein neues und nicht das alte Passwort!

      Richtig. Aus diesem Grund _musst_ Du die Angabe des Loginnamens verlangen. Wenn er diesen auch nicht mehr weiß, muss er sich an Dich persönlich wenden, und Du entscheidest mit Deinem Menschenverstand, ob er glaubhaft ehrliche Absichten hat. Es ist nicht schlecht, "menschliche" Prüfungsmechanismen vorzusehen; z.B. die Frage nach dem Mädchennamen der Mutter oder anderen individuellen Daten. Wichtig: Diese Daten zu kennen ist kein _Beweis_, sondern nur ein Indiz.

      Also ist das zusenden der Zgangsdaten lediglich bei Eingabe de email-Adresse schonmal disqualifiziert. Also wenn username auch vergessen nur über direkten Kontakt. Hast Recht. Da man den aber selbst wählen kann ist das eh unwahrscheinlich.
      Dann kann ich den Username auch direkt im Passwort-Vergessen Formular abfragen, und dem entsprechen dei email-Adresse raussuchen. Hat es denn dann noch Sinn zusätzlich nach der Email-Adresse zu fragen? Bräuchte man ja eigentlich nicht, aber wäre wieder ein Stück sicherer, was meist Du?
      Ihre Email Adresse wissen die meisten Leute wohl, und wenn es mehrere sind muß man halt ein paar mal probieren,  oder?

      Grüße
      Andreas

      Cheatah

      1. Hi,

        unsicher. Die Mailadresse hat man _vorher_ im Account hinterlegt - ausschließlich an diese wird gesendet.
        Kommt ja aufs selbe raus, wenn die Adresse in der DB 0 mal oder mehr als 1 mal vorkommt [...]

        nicht wirklich. Du verursachst hier zusätzliche Prüfungen, die - vom Zeitaufwand abgesehen - grundsätzlich immer fehleranfällig sind. Gerade bei sicherheitsrelevanten Themen sollte sowas vermieden werden. Desweiteren schaffst Du hierdurch ein ganz anderes Problem: Wenn unter einer Adresse (die nicht zwingend nur einer Person gehört!) _wirklich_ mehrere Accounts angemeldet sind, funktioniert es nicht mehr.

        Ein weiteres Problem ist, dass man eher die eMail-Adresse wechselt (mit Weiterleitungen usw. - ich habe x verschiedene Adressen, über die ich zwar noch erreicht werde, aber beim besten Willen nicht mehr weiß, wann ich welche benutzt habe), als den Namen, unter dem man sich hier und dort anmeldet. Kurz: Es ist nicht nur weniger sicher und schafft Dir als Entwickler mehr Arbeit, sondern ist auch unbequem.

        Hat es denn dann noch Sinn zusätzlich nach der Email-Adresse zu fragen?

        Nein, eigentlich nicht. Er könnte sie (wie erwähnt) höchstens vergessen haben.

        Cheatah

        1. Hi!
          Da hast Du wohl Recht. Hab jetzt nur noch ein Formular mit Benutzernamen, ist das beste denke ich!

          Danke Dir!

          Grüße
          Andreas

  2. Hallo!

    Hallo,

    Dann hätte ich wieder das problem, dass ich etl doppelte email-Adressen habe, aber dagegen könnte ich ja beim neuanmelden den alten Datensatz löschen... aber ob das so gut ist?

    Dann verhindere beim Anmelden, daß für eine email-Adresse mehrere User angemeldet werden können.

    Viele Grüße
    Andreas

    cu,
    auch Andreas