Frage

ich ein Login-System haben. Wie kann ich eine sichere Implementierung remember me System mit Hilfe von Cookies.

Was Wert soll ich zum Speichern in Cookie Benutzername und Passwort, aber wie kann ich es sicher?

War es hilfreich?

Lösung

definieren Ein Salz foreach Benutzer in db dann

auf Einstellung

$expire_time = time() + 2 * 7 * 24 * 3600; // 2 weeks exp time

setcookie( 
    "rememberMe",
    crypt($username, $salt),
    $expire_time,
    '/'
);

auf die Validierung

$_COOKIE['rememberMe'] === crypt($username, $salt)

Andere Tipps

Vielleicht könnten Sie eine 16 Zeichen Buchstaben / Zahlenfolge erstellen, die in einer Datenbank mit dem Benutzer und der MAC-Adresse, so dass (solange den Menschen nicht versuchen zu hart und macs Spoofing) zugeordnet ist nur, dass Maschine anmelden kann .

Vielleicht sollten Sie speichern (in Ihrem DB) Besucher IP, User Agent, Zeitzone oder installierten Plugins. Etwas, das einfach sein könnte, erhalten Javascript verwenden, da die MAC-Adresse bekommen könnte ein Problem sein.

Dann können Sie einfach überprüfen, ob Benutzer gleiche IP haben, UA, Zeitzone oder Plugins wie beim letzten Mal :) Oder Sie könnten MaxMind verwenden, um seine Position und bestätigen zu überprüfen, ob er richtige Zeitzone verwendet. Wenn es etwas Verdächtiges sollten Sie Cookie-Anmeldeinformationen verwerfen.

Es gibt nicht viel, um es ... lassen Sie sich nicht Ihre Session-Dateien (ini Einstellung session.gc_probability = 0) erhalten aufgeräumt, und ändern Sie die Session-Cookie von Zeit in Dauer (ini Einstellung session.cookie_lifetime = however_long_you_want_the_user_to_be_remembered).

Natürlich würden Sie wahrscheinlich wollen schließlich abgestanden Session-Dateien bereinigen, so dass Sie mit einer sehr geringe Wahrscheinlichkeit für die Bereinigung auftritt, oder tut einiger externe Bereinigung experimentieren können. So oder so, solange der Benutzer die Session-Cookie hält um und Sie halten die Session-Datei um, werden sie „erinnert“ werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top