2010-09-05 4 views
11

Ich habe ein Login-System. Wie kann ich ein sicheres remember me System mit Cookies implementieren.Wie kann ich ein gesichertes "Remember Me" -System mit PHP erstellen?

Welchen Wert sollte ich in Cookie Benutzername und Passwort speichern, aber wie kann ich es sichern?

+0

i Benutzername und Passwort – Saqueib

+1

OK in Cookie versucht haben, zu speichern. Das ist ein Anfang. Aber wenn ich diesen Keks abfangen kann, bleibt man ungeschützt. Schau dir folgendes an: http://stackoverflow.com/search?q=php+session+hijacking –

+0

Schlechte Idee. Nicht nur, dass irgendjemand auf dieser Maschine die User + Pass-Combo lesen kann, sondern jedes XSS, das 'document.cookie' sendet, wird in der Lage sein, Ihren Benutzernamen/Passwort wörtlich zu sehen. – alex

Antwort

1

definieren einen Benutzer Salz foreach in db dann

auf

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

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

auf Validieren

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

Es ist nicht viel dran ... Lassen Sie Ihre Sitzungsdateien nicht bereinigen (ini Einstellung session.gc_probability = 0), und ändern Sie den Sitzungscookie von temporär zu permanent (ini Einstellung session.cookie_lifetime = however_long_you_want_the_user_to_be_remembered).

Natürlich möchten Sie wahrscheinlich auch veraltete Session-Dateien bereinigen, so dass Sie mit einer geringen Wahrscheinlichkeit der Aufräumarbeiten experimentieren oder eine externe Bereinigung durchführen können. In beiden Fällen, solange der Benutzer den Sitzungscookie bei sich behält und Sie die Sitzungsdatei behalten, werden sie "erinnert".

+2

Ich denke, ein Cookie mit 'setcookie()' wäre eine bessere Idee, als dass Sitzungen niemals ablaufen. – alex

+1

Nun, so oder so, wenn der Benutzer sich erinnert, wird die Sitzung neu erstellt, also könnte es auch so bleiben. Sie können kritische Daten immer dann aussortieren, wenn zwischen den Besuchen eine große Zeitspanne liegt, wenn der nächste Besuch eintrifft. –

0

Vielleicht könnten Sie eine 16 Buchstaben/Zahl Zeichenfolge erstellen, die in einer Datenbank mit diesem Benutzer und der MAC-Adresse zugeordnet ist, so dass (nur solange die Leute nicht zu hart versuchen und Spoofing Macs) nur diese Maschine protokollieren kann auf.

0

Vielleicht sollten Sie (in Ihrer DB) Besucher IP, User Agent, Zeitzone oder installierte Plugins speichern. Etwas, das mit Javascript leicht zu bekommen ist, da die MAC-Adresse ein Problem sein kann.

Dann können Sie einfach überprüfen, ob der Benutzer die gleiche IP, UA, Zeitzone oder Plugins wie beim letzten Mal hat :) Oder Sie können MaxMind verwenden, um seinen Standort zu überprüfen und zu bestätigen, ob er die richtige Zeitzone verwendet. Wenn etwas verdächtig ist, sollten Sie die Cookie-Anmeldedaten löschen.

Verwandte Themen