Heim > Artikel > Backend-Entwicklung > So implementieren Sie die Sitzungsverwaltung in PHP
Das Sitzungsmodul kann nicht garantieren, dass die von Ihnen in der Sitzung gespeicherten Informationen nur für den Benutzer sichtbar sind, der die Sitzung erstellt hat. Sie müssen zusätzliche Schritte unternehmen, um vertrauliche Informationen in der Sitzung zu schützen. Wie Sie vertrauliche Informationen schützen, hängt von der Vertraulichkeit der Daten ab, die Sie in der Sitzung speichern.
session_start – Starten Sie eine neue Sitzung oder verwenden Sie eine vorhandene Sitzung wieder
Strikte Sitzungsverwaltung (Empfohlenes Lernen: PHP-Programmierung vom Einstieg bis zur Kompetenz)
Derzeit verwaltet PHP Sitzungen standardmäßig auf adaptive Weise, was sehr flexibel zu verwenden ist, aber auch bringt gewisse Risiken mit sich.
Ab PHP 5.5.2 wurde ein neues Konfigurationselement hinzugefügt: session.use_strict_mode
. Wenn diese Konfigurationsoption aktiviert ist und der von Ihnen verwendete Sitzungsspeicherprozessor sie unterstützt, werden nicht initialisierte Sitzungs-IDs abgelehnt und eine neue Sitzung für sie generiert. Dadurch wird verhindert, dass Angreifer eine bekannte Sitzungs-ID verwenden.
Beispielsweise kann der Angreifer dem Opfer per E-Mail einen Link mit der Sitzungs-ID senden: http://example.com/page.php?PHPSESSID=123456789.
Wenn die Konfigurationsoption session.use_trans_sid
aktiviert ist, startet das Opfer eine neue Sitzung mit der vom Angreifer bereitgestellten Sitzungs-ID. Dieses Risiko kann reduziert werden, wenn die Option session.use_strict_mode
aktiviert ist.
Warnung
Benutzerdefinierte Sitzungsspeicher können auch den strikten Sitzungsmodus unterstützen, indem sie eine Sitzungs-ID-Validierung implementieren. Es wird empfohlen, dass Benutzer die Gültigkeit der Sitzungs-ID überprüfen, wenn sie ihren eigenen Sitzungsspeicher implementieren.
Auf der Browserseite können Sie die Domäne und den Pfad für das Cookie festlegen, das zum Speichern der Sitzungs-ID verwendet wird. Es ist nur HTTP-Zugriff zulässig, HTTPS-Zugriff und andere Sicherheitsattribute müssen verwendet werden. Wenn Sie PHP Version 7.3 verwenden, können Sie auch das SameSite-Attribut für das Cookie festlegen. Ein Angreifer kann diese Browserfunktionen ausnutzen, um eine dauerhaft verfügbare Sitzungs-ID festzulegen.
Das bloße Festlegen des Konfigurationselements session.use_only_cookies
kann dieses Problem nicht lösen. Das Konfigurationselement session.use_strict_mode
kann dieses Risiko verringern. Legen Sie session.use_strict_mode=On
fest, um nicht initialisierte Sitzungs-IDs abzulehnen.
Hinweis: Obwohl die Verwendung des Konfigurationselements session.use_strict_mode
die durch die flexible Sitzungsverwaltung verursachten Risiken verringern kann, verwenden Angreifer dennoch JavaScript-Injection und andere Mittel, um Benutzer zu zwingen, die von der erstellte Sitzung zu verwenden Angreifer und hat eine normale Initialisierungssitzungs-ID durchlaufen.
Wie Sie diese Windrichtung reduzieren können, finden Sie im Abschnitt mit Vorschlägen in diesem Handbuch. Wenn Sie das Konfigurationselement session.use_strict_mode
aktiviert, die zeitstempelbasierte Sitzungsverwaltung verwendet und die Sitzungs-ID durch Festlegen des Konfigurationselements session_regenerate_id()
neu generiert haben, kann die vom Angreifer generierte Sitzungs-ID gelöscht werden.
Wenn auf eine abgelaufene Sitzung zugegriffen wird, sollten Sie alle Daten der aktiven Sitzung für eine spätere Analyse speichern. Bitten Sie den Benutzer dann, sich von der aktuellen Sitzung abzumelden und erneut anzumelden. Verhindern Sie, dass Angreifer weiterhin „gestohlene“ Sitzungen verwenden.
Warnung
Der Zugriff auf abgelaufene Sitzungsdaten bedeutet nicht immer, dass ein Angriff im Gange ist. Instabile Netzwerkbedingungen oder falsches Verhalten beim Löschen von Sitzungen führen dazu, dass legitime Benutzer auf abgelaufene Sitzungsdaten zugreifen.
Empfehlungen zu verwandten Themen: PHP-Sitzung (einschließlich Bilder, Videos, Fälle)
Das obige ist der detaillierte Inhalt vonSo implementieren Sie die Sitzungsverwaltung in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!