Best Practices für die Session-Sicherheit
Verhindern Sie Session-Fixation und -Hijacking durch Regenerierung und Flags.
Best Practices für die Session-Sicherheit ist eine kostenlose PHP Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des PHP Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der PHP Academy-Kurs umfasst insgesamt 4 Lektionen.
Session-Fixation-Angriff
Ein Angreifer bringt einen Benutzer dazu, eine Sitzungs-ID zu verwenden, die der Angreifer bereits kennt, und übernimmt anschließend nach der Anmeldung die Sitzung.
Fixation verhindern: session_regenerate_id()
Generieren Sie nach jeder Änderung von Berechtigungen (Anmeldung, Rollenänderung) eine neue Sitzungs-ID, während die vorhandenen Sitzungsdaten erhalten bleiben.
<?php
session_start();
// After successful login:
session_regenerate_id(true); // true = delete old session file
$_SESSION["user_id"] = $userId;Sitzungsübernahme
Ein Angreifer stiehlt die Sitzungs-ID durch Netzwerk-Sniffing, XSS oder das Offenlegen von Protokollen. Schützen Sie sich mit HTTPS, HttpOnly-Cookies und Fingerprinting.
session.cookie_httponly
Verhindern Sie, dass JavaScript das Sitzungs-Cookie liest – dadurch wird der meiste auf XSS basierende Sitzungsdiebstahl verhindert.
<?php
ini_set("session.cookie_httponly", 1);
session_start();session.cookie_secure
Markieren Sie das Sitzungs-Cookie als Secure, damit es nur über HTTPS gesendet wird.
<?php
ini_set("session.cookie_secure", 1);
session_start();session.cookie_samesite
Setzen Sie SameSite auf Strict oder Lax, um CSRF-Angriffe zu verhindern, bei denen das Sitzungs-Cookie verwendet wird.
<?php
ini_set("session.cookie_samesite", "Strict");
session_start();Bindung an den User-Agent
Speichern Sie den User-Agent beim Anmelden in der Sitzung und überprüfen Sie ihn bei jeder Anfrage, um eine Sitzungsübernahme zu erkennen.
<?php
if (!isset($_SESSION["ua"])) {
$_SESSION["ua"] = $_SERVER["HTTP_USER_AGENT"];
} elseif ($_SESSION["ua"] !== $_SERVER["HTTP_USER_AGENT"]) {
session_destroy();
die("Session invalid");
}Session-Timeout
Implementieren Sie aktivitätsbasierte Timeouts – melden Sie inaktive Benutzer automatisch ab.
<?php
$timeout = 1800;
if (isset($_SESSION["last_active"]) &&
time() - $_SESSION["last_active"] > $timeout) {
session_destroy();
header("Location: /login");
exit;
}
$_SESSION["last_active"] = time();session.use_strict_mode
Aktivieren Sie den Strict Mode, damit der Server unbekannte Sitzungs-IDs ablehnt – dadurch wird Session Fixation durch Einschleusen über URLs verhindert.
<?php
ini_set("session.use_strict_mode", 1);
session_start();Benutzerdefinierte Sitzungshandler
Wenn Sie Sitzungen in Redis oder einer Datenbank speichern, können Sie zentral alle Sitzungen eines Benutzers ungültig machen und aktive Sitzungen überwachen.
Regelmäßige Neugenerierung
Generieren Sie auch während einer langen authentifizierten Sitzung die Sitzungs-ID alle 15–30 Minuten neu, um das Risiko eines Token-Diebstahls zu verringern.
Zusammenfassung
Verwenden Sie immer HTTPS, setzen Sie die Flags HttpOnly+Secure+SameSite, rufen Sie session_regenerate_id(true) nach der Anmeldung auf, implementieren Sie Inaktivitäts-Timeouts und verwenden Sie den Strict Mode.
Kurztest
Was bewirkt session_regenerate_id(true)?
Häufig gestellte Fragen
Ist die Lektion „Best Practices für die Session-Sicherheit“ kostenlos?
Ja — der vollständige Text von „Best Practices für die Session-Sicherheit“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des PHP Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der PHP Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Best Practices für die Session-Sicherheit“?
Verhindern Sie Session-Fixation und -Hijacking durch Regenerierung und Flags. Du übst PHP Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um PHP Academy zu starten?
Keine Vorkenntnisse erforderlich. PHP Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.
Wie lange dauert die Lektion „Best Practices für die Session-Sicherheit“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser PHP Academy-Lektion Code schreiben und ausführen?
Ja. Jede PHP Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Sessions starten und verwenden
- Best Practices für die Session-Sicherheit
- Cookies setzen und auslesen
- Cookie-Sicherheit: HttpOnly- und Secure-Flags