Frage

Wie setzen Sie diese in CodeIgniter?

War es hilfreich?

Lösung

(Diese Antwort war eine Antwort auf die ursprüngliche Frage)

  

Wie würden Sie das tun? Oder wie würde   Sie erstellen eine Sitzung mit einem längeren   Ablaufdatum als die andere?

     

Alle erstellten Sitzungen verwenden würden die   gleicher $ config [ 'sess_expiration'] in der   Konfigurationsdatei (Standard: 7200 Sekunden),   gibt es eine Möglichkeit, einen eigenen Wert zu übergeben   ?

Ablauf einer Session-Cookie Erweiterung wird nicht für eine „remember me“ -Funktion arbeiten, da die Benutzer ihre Session-Cookie verlieren, wenn sie den Browser schließen. Wenn Code Igniter keinen nativen haben „erinnern Feature“, dann werden Sie brauchen, um etwas zu schreiben, eine lange Lebensdauer Cookie zu löschen, die Informationen enthält, die eine automatische Anmeldung erlaubt, wenn der Server es sieht wieder.

Es gibt einen guten Artikel über rel="noreferrer">, der zusammengefasst werden als:

  
      
  1. Bei erfolgreicher Anmeldung des Benutzers mit Remember Me geprüft, ein Login   Cookie wird zusätzlich zu den ausgegebenen   Standard-Session-Management-Cookie. 2
  2.   
  3. Der Login-Cookie enthält den Benutzernamen des Benutzers und eine Zufallszahl   (Das „Token“ von hier an) von einem   entsprechend großer Raum. Der Benutzername und das   Token werden als Paar in einer gespeicherten   Datenbanktabelle.
  4.   
  5. Wenn ein nicht-angemeldete Benutzer die Website besucht und präsentiert einen Login-Cookie,   der Benutzername und das Token nachgeschlagen   in der Datenbank.        1. Wenn das Paar vorhanden ist, wird der Benutzer authentifiziert betrachtet.   Der verwendete Token wird von der Abnehm   Datenbank. Ein neues Token erzeugt wird,   in der Datenbank mit dem Benutzernamen gespeichert,   und über einen neuen Login an den Benutzer ausgegeben   Plätzchen.        2. Wenn das Paar nicht vorhanden ist, wird der Login-Cookie ignoriert.
  6.   
  7. Benutzer, die nur über diesen Mechanismus authentifiziert sind   nicht sicher, erlaubt den Zugriff auf   geschützte Informationen oder Funktionen   wie ein Kennwort zu ändern, sehen   persönliche Daten, oder   Geld ausgeben. Zur Durchführung diejenigen   Operationen, muss der Benutzer zuerst   einreichen erfolgreich eine normale   Benutzername / Passwort-Login-Formular.
  8.   
  9. Da dieser Ansatz ermöglicht es dem Benutzer, mehrere in Erinnerung haben   Logins von verschiedenen Browsern oder   Computer, ist ein Mechanismus vorgesehen für   der Benutzer alle in Erinnerung löschen   Anmeldungen in einem einzigen Vorgang.
  10.   

Ein weiterer Artikel, die mehr Sicherheit auf diese Ideen in Verbesserte rel="noreferrer">

Wenn Sie die Praktiken in diesen Artikeln folgen, werden Sie nicht viel falsch machen!

Andere Tipps

Sie möchten vielleicht den Vorschlag von ‚Verbesserte Persistent Login-Cookie-Best Practice‘ zu überdenken. Ich habe meine Analyse des Problems auf der Website veröffentlicht, aber der Kern von ihm ist diese:

  

Sie können keine Cookie-Diebstahl ohne eine sichere Leitung verhindern, egal, was

(* Mit 'sicherer Leitung', meine ich SSL / VPN-Tunneling / Public-Key-Verschlüsselung - oder ein robustes Challenge-Response-Schema *)

Ich bin für persistente Login Best Practices, aber es gibt einen Punkt, an dem keine Menge Tricks helfen wird, und wo die nur Weg nach oben ist SSL.

Danke für die Lösung. Ich habe dies in meinem CI-Projekt umgesetzt werden.

DEV Hinweis: das Cookie ein gesichertes-Hash als erinnere mich-Schlüssel haben sollte. - speichere nicht nur eine User-ID) - Sie ein Passwort nicht speichern, - und speichern keine Hash-Passwort. Auf diese Weise Menschen melden Sie sich bei einem Konto nicht automatisch können.

Worst-Case-Szenario: Sobald ein Hacker die Hash-Methode entdeckt, können Sie den Schlüssel Produzenten Funktion an einem Ort einstellen und Sie sind wieder mit Sicherheit einrichten. Ich würde nur das Salz und Pfeffer Saiten einzustellen.

Ich hoffe, das hilft. Chris D. - von Australien:)

Für diese Dinge können die CI Variablen in allen Klassen durch eine eigene Bibliothek zugegriffen werden:

Zum Beispiel:

$this->session->sess_expiration = 500000;

Ich hoffe, dass Ihr Problem lösen.

gibt es Bibliothek auf Github für mich erinnere herunterladen.

Mit Hilfe dieser Bibliothek setCookie () Funktion, geschieht Folgendes:

1.A Cookie erzeugt eine eindeutige Nummer enthält, Diese Nummer wird in eine Datenbanktabelle aufgezeichnet, die so genannte ci_cookies zusammen mit dem netid / username weitergegeben zu setCookie ()

2. Wenn die verifyCookie () Funktion Cookie-Hash ist der Browser aufgerufen wird, muss die Hash Match in die Datenbank aufgenommen. Ist dies der Fall, kehrt verifyCookie () true vorwärts es auf der Startseite

U braucht Set conf vor Last-Sitzung

$do_not_remember = (boolean) $this->input->post('do_not_remember');
if ($do_not_remember) {
   $this->config->set_item('sess_expiration', 0);
   $this->config->set_item('sess_expire_on_close', true);
}
$this->load->library('session');
scroll top