Ich möchte, dass meine Website über ein Kontrollkästchen verfügt, auf das Benutzer klicken können, damit sie sich nicht jedes Mal anmelden müssen, wenn sie meine Website besuchen. Ich weiß, dass ich ein Cookie auf ihrem Computer speichern muss, um dies zu implementieren, aber was sollte in diesem Cookie enthalten sein?
Gibt es außerdem häufige Fehler, auf die Sie achten müssen, um zu verhindern, dass dieses Cookie eine Sicherheitslücke darstellt, die vermieden werden kann, während die Funktion "Erinnere dich an mich" beibehalten wird?
Sie können diese beschriebene Strategie verwenden hier als Best Practice (2006) oder eine aktualisierte Strategie, die hier beschrieben wird (2015):
Dieser Ansatz bietet eine gründliche Verteidigung. Wenn es jemandem gelingt, die Datenbanktabelle zu löschen, hat ein Angreifer keine Möglichkeit, sich als Benutzer auszugeben.
Ich würde eine Benutzer-ID und ein Token speichern. Wenn der Benutzer zur Site zurückkehrt, vergleichen Sie diese beiden Informationen mit einem dauerhaften Wert wie einem Datenbankeintrag.
Geben Sie aus Sicherheitsgründen nichts ein, das es jemandem ermöglicht, das Cookie zu ändern, um zusätzliche Vorteile zu erzielen. Speichern Sie beispielsweise nicht ihre Benutzergruppen oder ihr Kennwort. Alles, was geändert werden kann, um Ihre Sicherheit zu umgehen, sollte nicht im Cookie gespeichert werden.
Speichern Sie ihre Benutzer-ID und ein RememberMeToken. Wenn sie sich mit Remember Me Checked anmelden, generieren sie ein neues RememberMeToken (das alle anderen Maschinen ungültig macht, die als Remember Me gekennzeichnet sind).
Wenn sie zurückkehren, suchen Sie sie mit dem Anmeldetoken und stellen Sie sicher, dass die Benutzer-ID übereinstimmt.
Ich habe selbst hartnäckige Sitzungen untersucht und festgestellt, dass es das Sicherheitsrisiko einfach nicht wert ist. Verwenden Sie es, wenn Sie es unbedingt müssen, aber Sie sollten eine solche Sitzung als nur schwach authentifiziert betrachten und eine neue Anmeldung für alles erzwingen, was für einen Angreifer von Wert sein könnte.
Der Grund dafür ist natürlich, dass Ihre Cookies, die Ihre permanente Sitzung enthalten, so leicht gestohlen werden.
4 Möglichkeiten, um Ihre Cookies zu stehlen (von ein Kommentar von Jens Roland auf der Seite @splattne
basierte seine Antwort auf):