Ich entwickle eine Webanwendung mit Codeigniter. Wenn sich ein Benutzer bei meiner Website authentifiziert, speichere ich derzeit dessen Benutzerkennung in meinem Sitzungscookie (für die ich die Verschlüsselung aktiviert habe). Einige meiner Modellklassen verwenden den Wert im Parameter 'user-identifier' der Sitzung / des Cookies, um Änderungen an Eigenschaften von Benutzerkonten vorzunehmen.
Meine Sorge ist, dass ich mich frage, ob es möglich ist, dass jemand ein gültiges codeigniter-Session-Cookie mit einer von mir festgelegten Benutzerkennung nimmt, den Wert der Benutzerkennung auf den Wert eines anderen Benutzers ändert und Nehmen Sie Änderungen an einem anderen Benutzerkonto vor. Würden codeigniter / php-Sitzungen einen Fehler erzeugen, wenn jemand versucht, eine Eigenschaft eines Session-Cookies zu ändern?
Öffnen Sie Ihre /application/config/config.php, suchen Sie nach "sess_use_database" und ändern Sie sie in "TRUE", falls Sie dies noch nicht getan haben. Auf diese Weise werden alle Sitzungsvariablen in einer Datenbanktabelle gespeichert und Sitzungscookies enthalten nur die Sitzungs-ID-Zeichenfolge.
Für zusätzliche Sicherheit können Sie auch "sess_match_ip" auf TRUE setzen. Auf diese Weise wird die Sitzung zerstört, wenn jemand das Cookie Ihres Benutzers stiehlt und versucht, es als sein eigenes zu übergeben.
"wenn es ist möglich, ein gültiger Codeigniter-Session-Cookie Ändern Sie den Wert der Benutzerkennung in der Wert eines anderen Benutzers und Änderungen an einem anderen Benutzer vornehmen Konto. "
Meine Antwort ist nicht wirklich CI bezogen, also bitte bedenkt das.
Wenn Sie den Benutzer "username1" authentifizieren, sollte das, was für Authentifizierungszwecke an den Client zurückgesendet werden soll, ein Hash sein, den der Server mit diesem Benutzer korreliert. Die gesamte Kommunikation zwischen dem Client und dem Server basiert auf diesem Hash.
Der Server generiert einen eindeutigen Hash pro Benutzer und der Hash sollte eine kurze Lebenszeit haben. Kann jemand einen Hash erfassen und als dieser Benutzer weitergeben? Bestimmt. Deshalb sollten Sie auch nach dem Agenten und der IP des Benutzers suchen, um zu überprüfen, ob sie mit dem Hash übereinstimmen, um Session-Hijacking zu verhindern.
NIEMALS DAS TUN:
Wenn einige neue Entwickler gesehen werden, die den Benutzernamen in einem Cookie speichern und auf diesem Client eine Variable senden, um ihre Datenbanken zu aktualisieren. Tue das niemals. Vertrauen Sie niemals dem Kunden. Wenn der Server den Hash des Clients erhält, sollte er prüfen, ob er einem authentifizierten Benutzer gehört und die Benutzer-ID (Variable zum Aktualisieren der Benutzerdaten) vom Server holen. NIEMALS vom Kunden.
Ich bin mir nicht sicher, was genau Ihre "Benutzerkennung" ist. Die allgemeine Regel lautet: Speichern Sie im Sitzungscookie nur die Sitzungs-ID. Speichern Sie alles andere (wie eine Benutzer-ID) intern auf der Serverseite und rufen Sie sie mit der Sitzungs-ID ab.
Wenn der Benutzer die Sitzungs-ID (eine zufällige Zeichenfolge) ändert, wird eine neue Sitzung gestartet. Die Idee hinter der Sitzungs-ID ist, dass es unmöglich ist, die ID eines anderen Benutzers zu erraten - deshalb ist es zufällig und so lang.
Tags und Links php session session-cookies codeigniter