Ist dies eine angemessene Art und Weise zu implementieren ‚remember me‘ -Funktionalität
-
22-08-2019 - |
Frage
Wenn sich ein Benutzer an die Seite und sagt: ‚erinnere mich‘, wir die eindeutige Kennung für den Benutzer zu erhalten, dies mit einem keysize von 256 mit RijndaelManaged verschlüsseln und diese mit einem Satz Ablauf von sagen wir in einem Httponly-Cookies platzieren. 120 Tage betragen. wird der Ablauf jede erfolgreiche Anforderung an den Server aktualisiert.
Optional erzeugen wir den Initialisierungsvektor basierend auf dem User-Agent und ein Teil der IPv4-Adresse (die letzten zwei Bytes).
Offensichtlich theres kein reales Ablaufsystem in diesen eingebaut, diese verschlüsselten Schlüssel der Anwender technisch immer nutzen kann (da wir nicht über die Server-Seite-Taste ändern) ..
als ich die Tatsache, dass diese Funktion ich dem Benutzer ermöglichen müssen, damit in der Lage sein den Login zu umgehen und geben Sie mir ihre eindeutige ID (das ist ein guid ist), ich dachte, das guid allein war wirklich schwer, eine echte zu erraten Benutzer guid, sondern durch botnots die Seite offen angreifen zu erzeugen würde verlassen guids (ich habe keine Ahnung, wie realistisch es ist für sie ein legit guid zu finden) .. so ist dies, warum theres Verschlüsselung, wo der Server den Verschlüsselungsschlüssel kennt, und optional die iv ist an den Browser und IP-Teil spezifisch.
Soll ich einen anderen Ansatz in Betracht ziehen, wo die Server-Probleme Karten zu einem Benutzer zugeordnet ist, und diese Tickets würden ein bekanntes Ablaufdatum haben, damit der Server in der Steuerung des Ablaufs bleibt? sollte ich über Ablauf wirklich? erinnere mich erinnere mich doch?
Wir freuen uns gedemütigt zu werden;) Prost.
Lösung
Die Lösung auf Ihre Frage ist in dieser Blog-Post
"Persistent Login-Cookie-Top Praxis“, beschreibt ein relativ sichere Ansatz der zur Umsetzung vertraut "Remember Me" Option für Web Websites. In diesem Artikel schlage ich eine Verbesserung, die alle behält die Vorteile dieses Ansatzes, sondern auch macht es möglich, wenn ein erkennen persistent Login Cookie wurde gestohlen und verwendet von einem Angreifer.
Wie Jacco sagt in den Kommentaren: für eingehende Informationen über sicheren Authentifizierung lesen The Definitive Guide To Website-Authentifizierung .
Andere Tipps
Haben betrachten Sie so etwas wie Open ID? Als SO verwendet.
Wie wichtig ist die Information, die in Erinnerung wird? Wenn es nicht etwas sehr persönlich oder wichtig sein wird, setzen Sie einfach eine GUID im Cookie.
einschließlich der IP-Adresse in der Berechnung ist wahrscheinlich eine schlechte Idee, da es die Nutzer über öffentliche Netze machen würde sofort vergessen werden.
Brute-Force Mit GUIDs zu finden, ist lächerlich, da es 2 128 Möglichkeiten.