2009-12-07 10 views
12

Ich habe ein Login-System für meine Website, die Details des Benutzers, die in der Datenbank gespeichert sind userid (einzigartig für jeden Benutzer und identifier), E-Mail-Adresse (unique), Anzeigename (nicht eindeutig), Passwort und membersince.
Was soll ich nun in den Cookies speichern? Ich habe überlegt, nur die Benutzer-ID im Cookie mit einem Ablaufdatum zu speichern und dann, wenn der Benutzer meine Website nach der Anmeldung wieder besucht, nach dem Cookie zu suchen und ihn einzuloggen (was für mich nicht richtig aussieht) und den Cookie zu zerstören wenn er beschließt, sich auszuloggen.
* Eine kleine Erklärung wäre auch sehr hilfreich. DankWas muss ich in Cookies speichern, um "Remember me" während der Benutzeranmeldung zu implementieren?

+0

Scheint, wie Sie bereits beantwortet haben die Frage selbst, speichern Sie die Benutzer-ID. – TechTravelThink

+1

Dies ist nicht sicher - siehe Antworten unten. – Jon

Antwort

12

Sie können die Benutzer-ID immer nur in einem Cookie speichern, wenn Sie sie mit einem geheimen Schlüssel signieren, den nur Ihre Anwendungen kennen. Ansonsten ist es für den Benutzer möglich, den Cookie in irgendwas zu ändern und sich als jemand anderen einzuloggen. Wenn Sie also die Benutzer-ID speichern möchten, speichern Sie auch einen Hash der Benutzer-ID mit dem geheimen Schlüssel (idealerweise mit HMAC) und wenn Sie sie anmelden möchten, berechnen Sie den gleichen Hash und vergleichen Sie ihn mit dem Hash aus dem Cookie. Eine andere Lösung besteht darin, ein zufälliges Token zu generieren, es in der Datenbank zu speichern und dieses im Cookie zu verwenden. Wenn es lang und zufällig genug ist, besteht kaum eine Chance, dass jemand das Token einer anderen Person erraten würde.

+0

Vielen Dank Mann – halocursed

+0

Vielen Dank! Aber was meinst du mit "Benutzer-ID mit dem geheimen Schlüssel". Wenn ich ein schlechter Kerl bin und den ganzen Keks ausstähle und diese Hash-Zeichenfolge bekomme, um vorzutäuschen, dass ich der angemeldete Benutzer bin, kann der Server wissen, dass ich die falsche Person bin? – Jaskey

+0

Der Zweck des geheimen Schlüssels besteht darin, sicherzustellen, dass Sie sich nicht als Benutzer anmelden können, indem Sie den Cookie setzen. Ohne den geheimen Schlüssel zu kennen, haben Sie keine Möglichkeit, den Cookie zu erstellen. Wenn Sie den gesamten Cookie für einen vorhandenen Benutzer erstellen, können Sie sich natürlich als dieser Benutzer anmelden. Es gibt mehrere Möglichkeiten, dies zu verhindern: 1) das Cookie nach einiger Zeit ablaufen lassen (Timestamp in das Cookie einbinden), 2) das Cookie für eine bestimmte IP-Adresse spezifisch machen (wiederum die IP-Adresse im Cookie codieren)), 3) mach es für eine bestimmte User-Agent-Zeichenfolge spezifisch (dies kann jedoch leicht gefälscht werden) –

1

PHP verfügt über eine integrierte in Session-Management, das genau das tut, was Sie suchen:

http://us.php.net/manual/en/book.session.php

Ich würde nicht empfehlen, die user_id im Cookie gespeichert werden. Stattdessen können Sie ein eindeutiges Token generieren und das Token den Benutzern in Ihrer Datenbank zuordnen. Aktivieren Sie die Option &, um das Token bei jeder Anforderung neu zu generieren. Auch dies ist ein wenig redundant, da die Sitzungsverwaltung bereits in PHP integriert ist.

+0

Können Sie ein wenig Erklärung dazu geben? – halocursed

-2

Fügen Sie einfach die Cookie-Gültigkeitsdauer auf 2 Tage oder die Anzahl der Tage hinzu, an denen Sie sich an den Benutzer erinnern und den Cookie speichern möchten.

Verwandte Themen