Lassen Sie uns das durchgehen:
Cookies und Sitzungen sind beide Möglichkeiten, um den Anwendungsstatus zwischen verschiedenen Anforderungen des Browsers beizubehalten. Ihnen ist es zu verdanken, dass Sie sich beispielsweise nicht jedes Mal anmelden müssen, wenn Sie eine Seite in StackOverflow anfordern.
Kekse
Cookies sind kleine Datenbits (maximal 4 KB lang), die Daten in einem Schlüssel-Wert-Paar enthalten:
name=value
Diese werden entweder über JavaScript oder über den Server mithilfe eines HTTP-Headers festgelegt .
Für Cookies ist ein Ablaufdatum festgelegt, beispielsweise mithilfe von HTTP-Headern:
Set-Cookie: name2=value2; Expires=Wed, 19 Jun 2021 10:18:14 GMT
Dies würde dazu führen, dass der Browser ein Cookie name2
mit dem Wert " set" setzt value2
, das in etwa 9 Jahren abläuft.
Cookies gelten als sehr unsicher, da der Benutzer ihren Inhalt leicht manipulieren kann. Deshalb sollten Sie Cookie-Daten immer validieren . Gehen Sie nicht davon aus, dass das, was Sie von einem Cookie erhalten, unbedingt das ist, was Sie erwarten.
Cookies werden normalerweise verwendet, um den Anmeldestatus beizubehalten, wobei ein Benutzername und ein spezieller Hash vom Browser gesendet werden und der Server sie mit der Datenbank vergleicht, um den Zugriff zu genehmigen.
Cookies werden auch häufig bei der Erstellung von Sitzungen verwendet .
Sitzungen
Sitzungen sind etwas anders. Jeder Benutzer erhält eine Sitzungs-ID , die zur Überprüfung entweder per Cookie oder per GET-Variable an den Server zurückgesendet wird .
Sitzungen sind normalerweise nur von kurzer Dauer, was sie ideal zum Speichern des temporären Status zwischen Anwendungen macht. Sitzungen laufen auch ab, wenn der Benutzer den Browser schließt.
Sitzungen gelten als sicherer als Cookies, da die Variablen selbst auf dem Server gespeichert werden . So funktioniert das:
- Server öffnet eine Sitzung (setzt ein Cookie über den HTTP-Header)
- Server legt eine Sitzungsvariable fest.
- Client ändert Seite
- Der Client sendet alle Cookies zusammen mit der Sitzungs-ID aus Schritt 1.
- Der Server liest die Sitzungs-ID aus dem Cookie.
- Der Server stimmt mit der Sitzungs-ID aus einer Liste in einer Datenbank (oder einem Speicher usw.) überein.
- Server findet eine Übereinstimmung, liest Variablen, die jetzt auf
$_SESSION
Superglobal verfügbar sind.
Wenn PHP keine Übereinstimmung findet, startet es eine neue Sitzung und wiederholt die Schritte 1-7.
Sie können vertrauliche Informationen in einer Sitzung speichern, da diese auf dem Server gespeichert sind. Beachten Sie jedoch, dass die Sitzungs-ID weiterhin gestohlen werden kann, wenn sich der Benutzer beispielsweise über ein unsicheres WLAN angemeldet hat. (Ein Angreifer kann die Cookies schnüffeln und als eigene festlegen. Er sieht die Variablen selbst nicht, aber der Server identifiziert den Angreifer als Benutzer.)
Das ist der Kern davon. Sie können mehr über das PHP-Handbuch zu beiden Themen erfahren.