Warum sollte ich session-id im cookie anstelle der Speicherung von login und (gehashte) Passwort cookie?
(Ich war überrascht, dass diese Frage gar nicht gefragt auf Stack für jetzt, aber ich habe einige der Suche und konnte nichts finden o.O)
Arbeite ich auf service-basierte webapp und ich Frage mich, was ist der beste Weg für den Umgang mit Benutzer-logins. Bisher habe ich:
- Wenn der Benutzer die login-in, liefern Sie Nutzung creditials. Passwort wird gesalzen und gehasht lokal, als es zu übertragen, um server über POST (also schnüffeln, werden die Benutzer nicht in der Lage, zum abrufen von original-Passwort, dh. überprüfen Sie Sie auf den anderen Seiten)
- Login und das gehashte Passwort gespeichert im cookie mit TTL von 15 Minuten (gesperrt jede einzelne webaction)
- Passwod ist server-Seite gesalzen und gehasht wieder, und als es im Vergleich mit dem Passwort in der Datenbank gespeichert (so, Passwörter sind doppelt hashed mit verschiedenen Salzen, das ist für jemanden, Brech in die Datenbank ein - Sie noch nicht in der Lage sich zu erholen login creditionals)
- User kann höchstens 3 login-versuche pro 5 Minuten von der einzelnen IP -
- Benutzer erhalten Informationen über die letzten erfolgreichen und fehlgeschlagenen login-versuche zusammen mit Datum und IP -
Jemand bemerkt hatte, dass es besser zum speichern von eindeutigen session-id statt gehashte Passwort im cookie und ich Frage mich, warum es so wichtig ist - wenn jemand schnüffeln Pakete, dann ist es egal, session-id oder nicht - Sie kann immer noch Holen-Paket von der Anmeldung mit allen erforderlichen Daten nach wie vor als rechtmäßigen Nutzer und login selbst. Gibt es irgendwelche anderen Vorteile von gespeicherten session-id Konzept über die Speicherung von login-und Hash-Passwort im cookie appraoach?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Speichern das gehashte Passwort als cookie ist sehr böse Sicherheitslücke und eine OWASP Verletzung. Der springende Punkt in der Hash ein Passwort ist, Sie zwingt den Angreifer zu brechen, die die hash zum einloggen. Wenn die Angreifer können nur ziehen Sie den hash aus der Datenbank und dann auf login, dann haben Sie ein system, das äquivalent zu speichern Passwort im Klartext.
Jede Plattform hat eine session handler in php verwenden Sie einfach
session_start()
und die $_SESSION super global. Durch das schreiben Ihrer eigenen session-handler werden Sie weniger sicher./dev/urandom
zum generieren der token.Durch die Speicherung einer session-ID, die Sie identifizieren können unterschiedliche Sitzungen für den gleichen Benutzer, und möchten Sie vielleicht, um Sie zu behandeln, die in besonderer Weise (z.B. nur eine einzelne Sitzung, oder von Daten, die im Zusammenhang mit der Sitzung statt, um den Benutzer).
Sind und Sie unterscheiden können easly Aktivität von verschiedenen Sitzungen, so können Sie die Sitzung beenden, ohne Ihr Passwort zu ändern, wenn Sie offen in einem computer, und die anderen Sitzungen nicht einen Unterschied feststellen.
Doppel-hashing nicht Schutz vor dem exploit.
Nimmt man die gespeicherte Benutzer-id und das gehashte Passwort aus dem cookie an den server senden würde, würde er sofort zugreifen.
Mit session-ids, wäre es zumindest mal aus.