Wie kann ich mich an Feature erinnern? [Duplikat]

8

Jeder Benutzer hat eine eindeutige 32-Zeichen-ID (etwa so: md5("salt" . $username . $user_password . "salt2"); ). Und ich speichere diesen Wert in 'unique_id' Feld in Tabellenbenutzer. Ist es eine gute Möglichkeit, diesen Wert dem Benutzer-Cookie zuzuweisen und ihn nur dann einzuloggen, wenn er es zugewiesen hat? Und natürlich prüfen, ob dieser Wert in der Datenbank existiert?

Ich halte das nicht für eine gute Methode, denn wenn jemand Ihren Cookie stiehlt, kann er sich in Ihrem Konto anmelden.

Was ist die andere / bessere Lösung? Natürlich ist es sicher am sichersten, es nur in Sitzungen zu speichern, aber ich möchte dieses Remember Me-Feature implementieren.

Danke.

    
good_evening 27.03.2012, 13:44
quelle

2 Antworten

3

Geben Sie an, dass der Name der Datenbanktabelle für persistente Cookies pcookies mit den folgenden Spalten lautet:

  • cookie_id (CHAR)
  • Benutzer-ID (INT)
  • Ablauf (DATETIME)
  • Salz (CHAR)

Schritte zur Cookie-Erstellung:

  1. Erstellen Sie nach erfolgreicher Anmeldung einen Cookie-Eintrag in der Datenbank unter einer eindeutigen ID. Sie können es durch hash_hmac ('sha512', $ token, $ salt) erzeugen, wobei $ token = uniqid ($ user_id, TRUE) und $ salt = md5 (mt_rand ()).
  2. Speichern Sie 'Benutzer-ID', 'Ablaufzeit' und 'Salz' zusammen mit der 'Cookie-ID' in der Datenbank.
  3. Speichern Sie 'Cookie-ID' und 'Token' in Cookie.

Authentifizierungsschritte:

  1. Wenn ein permanenter Cookie gefunden wird, prüfen Sie zuerst, ob der Datensatz in der Datenbank verfügbar ist oder nicht.
  2. Wenn der Datensatz verfügbar ist, überprüfen Sie, ob der Cookie abläuft oder nicht.
  3. Wenn der Cookie nicht abläuft, validiere die Cookie-ID mit $ cookie_id == hash_hmac ('sha512', $ token_from_cookie, $ salt_from_db).
  4. Sobald der Cookie validiert ist, löschen Sie ihn aus der Datenbank und erstellen Sie einen neuen Cookie gemäß den oben beschriebenen Cookie-Erstellungsschritten.
  5. Wenn der Cookie als ungültig befunden wird, löschen Sie den Cookie vom Gerät und löschen Sie alle anderen Cookie-Datensätze des Benutzers aus der Datenbank, beachten Sie die Verwendung eines Diebstahlversuchs und fahren Sie mit der manuellen Anmeldung fort.

Hinweise:

  • Wenn die Sitzung verfügbar ist, ignorieren Sie den Cookie-Check.
  • Löschen Sie nach dem Abmelden den Cookie zusammen mit dem Datenbankeintrag.
  • Erlauben Sie Benutzern niemals, sensible Anfragen wie Passwortänderungen oder Kreditkarteninformationen von einer dauerhaften Cookie-Anmeldung auszuführen. Rufen Sie das Kennwort zum Anmelden auf und fügen Sie in der Sitzung ein Flag hinzu, um alle weiteren Vorgänge zuzulassen.
A.N.M. Saiful Islam 27.03.2012 16:54
quelle
1

Diese beiden Posts bieten hervorragende Implementierungsrichtlinien für dauerhafte Login-Cookies:

(Lies sie in der angegebenen Reihenfolge, da die zweite die erste verbessert.)

    
Sahand 27.03.2012 17:36
quelle

Tags und Links