"Passwort vergessen" - sicher umsetzen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • "Passwort vergessen" - sicher umsetzen

    Hi,

    für mein Projekt sitze ich soeben an der Benutzerverwaltung und am Punkt "Passwort vergessen".
    Bei diesem Thema geht es nicht um die konkrete Implementierung mittels PHP, sondern um die Erarbeitung aller Szenarieren.
    Ich hoffe ihr könnt meine Gedankengegänge erweitern, sodass eine sichere Anwendung dabei rumkommt.

    Hier meine Ansätze
    1. Benutzer trägt seine Emailadresse ein
    2. System generiert ein zufällig Passwort und schickt diesem dem Benutzer zu
    3. User loggt sich mit temporären Passwort ein und muss ein neues Passwort hinterlegen
    4. User ist eingeloggt


    Soviel zum Verfahren. Nun muss ich jedoch das Anwendung vor Hackern schützen. Dabei habe ich mir folgendes überlegt.
    • Damit nicht ein Bot, einfach alle Emailadresse eingibt und somit das System blockiert, wird jede IP protokolliert und für 5 Minuten geblockt. D.h. eine IP kann nur alle 5 Minuten sich ein neues PW zuschicken lassen. Problem: Größere Unternehmen, Unis, etc. teilen sich eine IP...
    • Anzahl der zurückgesetzten PWs zählen um eventuell "Verdächtige" herauszufinden...?!?!


    Was fällt euch noch ein?

    thx!

  • #2
    Ich würde dem User eine eine E-Mail schicken, in der er auf einen Bestätigungslink klickt. Erst dann ein neues Passwort schicken bzw. ihn ein neuen eingeben lassen. Wenn er nicht klickt, verfällt die Anfrage irgendwann.

    Wenn ich deinen Ansatz richtig verstehe, möchtest du das Passwort des Users sofort ändern. Somit kann man aber fremde Accounts erst einmal unbrauchbar machen.

    Gruß Danny
    hostbar - Full Service Internet Agentur

    Kommentar


    • #3
      Hi danny,

      danke für den Hinweis.
      Bei php-resoruce.de erhält man direkt ein neues Passwort.

      Wie würdest du nun einen Bot erkennen?
      Nehmen wir an, er stößt für 100 Emails neue Passwörter an.
      Würdest du nun die IP für eine bestimmte Zeit blocken, oder die SESSION-ID?

      Kommentar


      • #4
        Zitat von phpnueling Beitrag anzeigen
        Wie würdest du nun einen Bot erkennen?
        Nehmen wir an, er stößt für 100 Emails neue Passwörter an.
        Würdest du nun die IP für eine bestimmte Zeit blocken, oder die SESSION-ID?
        Ich glaube da gibt es schon die ein oder andere Restriktion, sei es durch die Funktion selbst oder am Webserver. Ich würde es ebenfalls über einen Bestätigungslink machen und diesen nach 24 Stunden gültig halten. Parallel dazu noch eine maximal Anzahl an Anforderungen für das neue Passwort, sagen wir 3?

        Ich glaube, dann hast du so ziemlich gut ausgesorgt.

        Übrigens: Sollte der Benutzer gerade Probleme mit dem E-Mail Empfang haben oder ähnliches, würde ich vielleicht auch die Option anbieten, den Support kontaktieren zu können, falls es sehr dringend ist. Ist aber natürlich Abhängig von der Plattform, wo du diese Funktion implementieren willst.

        Kommentar


        • #5
          Das ist bei php-resource auch nicht gut gelöst

          Ich stimme TheAvenger zu und denke auch, dass man die Anzahl an parallelen/täglichen Passwort vergessen Anfragen limitiert. Mit der Option den Support zu kontaktieren ist es immer so eine Sache. Wie authentifiziert sich denn der Herr am Telefon, dass es auch wirklich der ist, als der er sich ausgibt?

          Hierzu auch ganz lesenswert How Apple and Amazon Security Flaws Led to My Epic Hacking | Gadget Lab | Wired.com bzw. in Kurzform http://money.cnn.com/2012/08/07/tech...cked/index.htm

          Gruß Danny
          hostbar - Full Service Internet Agentur

          Kommentar


          • #6
            Zitat von hostbar_danny Beitrag anzeigen
            Das ist bei php-resource auch nicht gut gelöst




            Wir sehen uns

            php-Entwicklung | ebiz-consult.de
            PHP-Webhosting für PHP Entwickler | ebiz-webhosting.de
            die PHP Marktplatz-Software | ebiz-trader.de

            Kommentar


            • #7
              Du musst das alte Passwort ja nicht überschreiben, du kannst auch einen zusätzlichen Token generieren ( sowas wie md5(rand()) ). Entweder der Benutzer loggt sich über den Token ein und kann ein neues Passwort vergeben, oder dem Benutzer fällt sein Passwort wieder ein, er loggt sich damit ein und der Token wird gelöscht.

              Kommentar


              • #8
                Zitat von hostbar_danny Beitrag anzeigen
                Mit der Option den Support zu kontaktieren ist es immer so eine Sache. Wie authentifiziert sich denn der Herr am Telefon, dass es auch wirklich der ist, als der er sich ausgibt?
                Das dürfte abhängig von der Webseite sein. Ich würde hier jetzt erstmal alle Foren, Blogs etc. ausschließen, weil man dort mal locker etwas warten kann auf das neue Passwort.

                Wenn es aber z.B. ein Kundenkonto ist gäbe es eine eine Vielzahl an Möglichkeiten. Etwa durch Beantwortung einer geheimen Frage, dem Zusenden eines Tokens auf das Handy, der Authentifizierung der Person anhand des Persos, durch eine Service-PIN oder durch Beantwortung einiger zufälliger Fragen, etwa vollständiger Name, Adresse, Geburtsdatum etc. Müsste man dann immer abwägen, in wie weit diese Informationen einsehbar sind. Denn wenn es ein Kundenkonto ist welches auch andere Teilnehmer mit darin befindlichen Informationen sehen, wäre die Frage nach diesen Daten so ziemlich sinnfrei

                Wenn gar nichts geht, dann halt per Brief an die hinterlegte Adresse. Deshalb habe ich Foren bspw. auch gleich ausgeschlossen, weil dort in der Regel nur nach leichten Datensätzen gefragt wird.

                Da könnte man ja locker eine Studie drüber machen. Einfach mal überall wo man so angemeldet ist das PW über den Support zurücksetzen lassen.
                Zuletzt geändert von TheAvenger; 14.11.2012, 08:46.

                Kommentar

                Lädt...
                X