(Diese Antwort war eine Antwort auf die ursprüngliche Frage)
Wie würden Sie dies tun ? Oder, wie wäre
erstellen Sie eine Sitzung mit einem mehr
Ablauf Datum als das andere ?
Alle angelegten Sitzungen verwenden
gleichen $config['sess_expiration'] in der
config-Datei (default: 7200 Sekunden),
gibt es eine Möglichkeit, übergeben Sie einen benutzerdefinierten Wert
?
Ausweitung der Ablauf einer session-cookie ist nicht zur Arbeit zu gehen, eine "remember me" - Funktion, da der Benutzer verlieren Ihre session-cookie, wenn Sie den browser schließen. Wenn der Code-Igniter-nicht über eine native "merken-Funktion", dann werden Sie brauchen, um etwas schreiben zu drop ein long-life-cookie enthält Informationen, die es erlauben, eine automatische Anmeldung, wenn der server erkennt es wieder.
Wenn der Benutzer sich erfolgreich anmeldet mit Remember Me aktiviert, eine Anmeldung
cookie ausgestellt wird, zusätzlich zu den
standard-session-cookie-management.Zwei
Der login-cookie enthält den Benutzernamen des Benutzers und eine Zufallszahl
("token") aus einer
entsprechend großen Raum. Der Benutzername und das
token sind, werden als paar in einer
Datenbank-Tabelle.
Wenn ein nicht-eingeloggter user die Website besucht und zeigt ein login-cookie,
der Benutzername und token gesucht werden
in der Datenbank sind.
1. Wenn das paar anwesend ist, wird der Benutzer als authentifiziert.
Das verwendete token wird entfernt
Datenbank. Ein neues token generiert wird,
gespeichert in der Datenbank mit dem Benutzernamen,
und an den Benutzer ausgegeben, die über eine neue Anmeldung
cookie.
2. Wenn das paar nicht vorhanden ist, wird der login-cookie wird ignoriert.
Benutzern, nur authentifizierten über diesen Mechanismus werden
nicht gestattet den Zugriff auf bestimmte
geschützte Informationen oder Funktionen
wie Passwort ändern, anzeigen
persönliche Daten, oder
Geld. Für die Durchführung dieser
Operationen, muss der Benutzer zuerst
Einreichen einer normalen
Benutzername/Passwort login-Formular.
Da dieser Ansatz erlaubt es dem Benutzer, mehrere erinnerte
Anmeldungen von unterschiedlichen Browsern oder
Computer, ist ein Mechanismus vorgesehen für
der Benutzer löscht alle Erinnerung
Anmeldungen in einem Arbeitsgang.
Wenn Sie Folgen Sie den Praktiken in diesen Artikeln wirst du nicht viel falsch machen!
yup, guter Artikel, aber nicht genau das, was ich Suche. Was ich wissen will ist, einen Weg zu tun, dass insbesondere die Aufgabe, (einrichten einer längeren Sitzung, als die anderen sind) CI 😀 Die Ausweitung der Ablauf einer session-cookie ist nicht zur Arbeit zu gehen, eine "remember me" - Funktion, da der Benutzer verlieren Ihre session-cookie, wenn Sie den browser schließen. Wenn der Code-Igniter-nicht über eine native "merken-Funktion", dann das Ideen präsentierten oben helfen Ihnen bei der Umsetzung. okay, jetzt sehe ich den Fehler in der Frage. Es sollte "Wie setzen Sie diese im CI?". Dumm mich. Ich werde noch ein bisschen warten, bevor wir mit Ihrem Vorschlag. Dank Paul. CodeIgniter hat jetzt eine sess_expire_on_close Einstellung. Theoretisch, wenn Sitzungen wird gespeichert, um die Datenbank über sess_use_database wäre es möglich sess_expire_on_close = FALSE und mit einem großen Wert für sess_expiration zu halten eine session aktiv, selbst nachdem Sie das browser-Fenster geschlossen. Ist das machbar und sicher in der Praxis aber?
Möchten Sie vielleicht zu überdenken den Vorschlag von 'Verbesserte Persistent Login-Cookie Best Practice". Ich habe meine Analyse des Problems auf der Website, aber das wesentliche ist dies:
Können Sie nicht verhindern, dass Cookies stehlen, ohne eine "sichere" Leitung, egal was
(*Mit "secure line", ich meine SSL - /VPN-tunneling - /public-key-Verschlüsselung oder eine robuste challenge-response-Schema *)
Ich bin für persistente login best practices, aber es gibt einen Punkt, wo kein Betrag von Tricks zu helfen, und wo die nur Weg nach oben ist SSL.
Interessant. Welches ist Ihre Analyse ? Die Letzte, geschrieben in den Namen 'Jens Roland'. Es sollte auf der zweiten Seite der Kommentare (jaspan.com/...) SSL löst nicht wirklich irgendetwas. Hintergrund-info: fishbowl.pastiche.org/2003/10/20/whats_your_threat_model Die Mehrheit der Angriffe gegen cookies sind entweder XSS, browser-bugs oder Abstriche an den client. Einstellung httpOnly behebt XSS (kein SSL Erforderlich), und SSL hat das nichts zu beheben, die andere. Auch wenn es in keiner Weise kinderleicht, SSL hat immer noch eine bessere als Durchschnittliche chance gegen die #1-Angriff-Modus (interception über den Draht). #2 und #3 sind einfach nur game over und über den Umfang des Authentifizierungs-Messen, und als Sie sagte, httpOnly fixes #4. Du bist einfach nur paraphrasieren, was ich in der zitierten aforelinked post: "Nun, in aller Kürze, wir werden uns nicht schützen vor den end-system angreifen, weil es wirklich schwierig. Und wir ignorieren DOS, weil das ist zu schwer zu werden. Aber wir decken den gesamten auf-den-Draht-Bedrohungen... weil... wir können!"
Danke für die Lösung.
Ich habe diese umgesetzt in mein CI-Projekt.
DEV Beachten Sie: der cookie ist, soll einen gesicherten-hash als der remember-me-Taste.
nicht nur speichern Sie eine Benutzer-id)
- speichern Sie nicht ein Passwort,
- und nicht speichern hash von Passwort.
So Leute, die können nicht automatisch in jedem Konto.
Worst-case-Szenario: sobald ein hacker entdeckt die hash-Methode können Sie die wichtigen Erzeuger-Funktion in einer einzigen Ort, und Sie sind wieder aufgestellt, mit Sicherheit. Ich würde einfach passen Sie die Salz und Pfeffer-strings.
dort ist Bibliothek, die auf github für remember me download.
Verwendung dieser Bibliothek setCookie () - Funktion tritt Folgendes auf:
1.Ein cookie generiert wird, enthält eine eindeutige Nummer
Diese Zahl ist bei der Speicherung in eine Datenbank-Tabelle namens ci_cookies zusammen mit der netid/Benutzername an setCookie()
2.Wenn die verifyCookie () - Funktion aufgerufen wird dem browser die cookie-hash muss mit dem hash-aufgenommen in die Datenbank. Wenn es das tut, verifyCookie() gibt true zurück, vorwärts es auf der Homepage
(Diese Antwort war eine Antwort auf die ursprüngliche Frage)
Ausweitung der Ablauf einer session-cookie ist nicht zur Arbeit zu gehen, eine "remember me" - Funktion, da der Benutzer verlieren Ihre session-cookie, wenn Sie den browser schließen. Wenn der Code-Igniter-nicht über eine native "merken-Funktion", dann werden Sie brauchen, um etwas schreiben zu drop ein long-life-cookie enthält Informationen, die es erlauben, eine automatische Anmeldung, wenn der server erkennt es wieder.
Gibt es einen guten Artikel auf Persistent Login-Cookie Best Practice, die zusammengefasst werden können als:
Einem anderen Artikel, das baut mehr Sicherheit auf diejenigen, die Ideen in Verbesserte Persistent Login-Cookie Best Practice
Wenn Sie Folgen Sie den Praktiken in diesen Artikeln wirst du nicht viel falsch machen!
Die Ausweitung der Ablauf einer session-cookie ist nicht zur Arbeit zu gehen, eine "remember me" - Funktion, da der Benutzer verlieren Ihre session-cookie, wenn Sie den browser schließen. Wenn der Code-Igniter-nicht über eine native "merken-Funktion", dann das Ideen präsentierten oben helfen Ihnen bei der Umsetzung.
okay, jetzt sehe ich den Fehler in der Frage. Es sollte "Wie setzen Sie diese im CI?". Dumm mich. Ich werde noch ein bisschen warten, bevor wir mit Ihrem Vorschlag. Dank Paul.
CodeIgniter hat jetzt eine
sess_expire_on_close
Einstellung. Theoretisch, wenn Sitzungen wird gespeichert, um die Datenbank übersess_use_database
wäre es möglichsess_expire_on_close = FALSE
und mit einem großen Wert fürsess_expiration
zu halten eine session aktiv, selbst nachdem Sie das browser-Fenster geschlossen. Ist das machbar und sicher in der Praxis aber?InformationsquelleAutor Paul Dixon
Möchten Sie vielleicht zu überdenken den Vorschlag von 'Verbesserte Persistent Login-Cookie Best Practice". Ich habe meine Analyse des Problems auf der Website, aber das wesentliche ist dies:
(*Mit "secure line", ich meine SSL - /VPN-tunneling - /public-key-Verschlüsselung oder eine robuste challenge-response-Schema *)
Ich bin für persistente login best practices, aber es gibt einen Punkt, wo kein Betrag von Tricks zu helfen, und wo die nur Weg nach oben ist SSL.
Die Letzte, geschrieben in den Namen 'Jens Roland'. Es sollte auf der zweiten Seite der Kommentare (jaspan.com/...)
SSL löst nicht wirklich irgendetwas. Hintergrund-info: fishbowl.pastiche.org/2003/10/20/whats_your_threat_model Die Mehrheit der Angriffe gegen cookies sind entweder XSS, browser-bugs oder Abstriche an den client. Einstellung httpOnly behebt XSS (kein SSL Erforderlich), und SSL hat das nichts zu beheben, die andere.
Auch wenn es in keiner Weise kinderleicht, SSL hat immer noch eine bessere als Durchschnittliche chance gegen die #1-Angriff-Modus (interception über den Draht). #2 und #3 sind einfach nur game over und über den Umfang des Authentifizierungs-Messen, und als Sie sagte, httpOnly fixes #4.
Du bist einfach nur paraphrasieren, was ich in der zitierten aforelinked post: "Nun, in aller Kürze, wir werden uns nicht schützen vor den end-system angreifen, weil es wirklich schwierig. Und wir ignorieren DOS, weil das ist zu schwer zu werden. Aber wir decken den gesamten auf-den-Draht-Bedrohungen... weil... wir können!"
InformationsquelleAutor Jens Roland
Danke für die Lösung.
Ich habe diese umgesetzt in mein CI-Projekt.
DEV Beachten Sie: der cookie ist, soll einen gesicherten-hash als der remember-me-Taste.
nicht nur speichern Sie eine Benutzer-id)
- speichern Sie nicht ein Passwort,
- und nicht speichern hash von Passwort.
So Leute, die können nicht automatisch in jedem Konto.
Worst-case-Szenario: sobald ein hacker entdeckt die hash-Methode können Sie die wichtigen Erzeuger-Funktion in einer einzigen Ort, und Sie sind wieder aufgestellt, mit Sicherheit. Ich würde einfach passen Sie die Salz und Pfeffer-strings.
Hoffe, das hilft.
Chris D. - aus Australien 🙂
InformationsquelleAutor aussiechris
Für diese Dinge, die CI-Variablen in allen Klassen kann zugegriffen werden, indem Sie Ihre eigene Bibliothek:
Beispiel:
Hoffen, dass Ihr problem zu lösen.
InformationsquelleAutor Guilherme
dort ist Bibliothek, die auf github für remember me download.
Verwendung dieser Bibliothek setCookie () - Funktion tritt Folgendes auf:
1.Ein cookie generiert wird, enthält eine eindeutige Nummer
Diese Zahl ist bei der Speicherung in eine Datenbank-Tabelle namens ci_cookies zusammen mit der netid/Benutzername an setCookie()
2.Wenn die verifyCookie () - Funktion aufgerufen wird dem browser die cookie-hash muss mit dem hash-aufgenommen in die Datenbank. Wenn es das tut, verifyCookie() gibt true zurück, vorwärts es auf der Homepage
Sie könnten versuchen: github.com/pveyes/CodeIgniter-RememberMe
InformationsquelleAutor rash111
U benötigen, setzen conf vor der Sitzung laden
InformationsquelleAutor Falselight