Was ist eine Session-ID? Wo werden Sessiondaten gespeichert?Die
Session-ID - es ist eine zufällige Zeichenfolge - wird serverseitig
generiert und wird beim allerersten Response des Webservers an den
Browser geschickt, der sie dann speichert. Üblicherweise wird eine
Session-ID in Cookies abgelegt, da der Browser bei jedem Request
automatisch den Inhalt des Cookies an den Webserver schickt der ihn
gesetzt hat. Dies bedeutet, dass sich der Programmierer der
serverseitigen Software theoretisch keine Sorgen machen muss, wie die
Session-ID vom Browser wieder zurück zum Webserver kommt, da diese
Arbeit automatisch vom Browser erledigt wird. Cookies sind nichts
anderes als menschenlesbare Textdateien, in denen ein Webserver
spezifische Daten auf der lokalen Platte des Benutzers ablegen kann.
Diese Daten sind u.U. recht kryptisch gehalten, so daß meistens nur der
Autor der serverseitigen Software - die den Cookie gesetzt hat - weiß,
wie diese Cookie-Daten zu interpretieren sind. Dies ist aber für
uns irrelevant und soll uns nicht weiter beschäftigen, denn wir wollen
feststellen, daß die Größe des Cookie - per Definition - ca. 4000
Zeichen nicht überschreiten darf (wovon wir ca. 40 Zeichen benötigen),
und dass es zwei Arten von Cookies gibt:
- "Persistente Cookies" werden für einen definierten Zeitraum
(Gültigkeitsdauer) auf der Festplatte des Benutzers als normal lesbare
Textdatei gespeichert. Dieser Zeitraum kann sich von wenigen Minuten
bis mehreren Jahren erstrecken.
- Die Lebensdauer der
"temporären Session-Cookies" beschränkt sich auf die Lebensdauer des
Browser-Fensters. Wird dieses geschlossen, wird auch der temporäre
Cookie verworfen. Dieser Cookie wird üblicherweise nicht auf der
Festplatte gespeichert; er residiert im Arbeitsspeicher des Rechners.
In
der Standardeinstellung benutzt PHP 4 die zweite Variante - die
temporären Cookies - um Session-IDs zu speichern. Im Cookie wird der
Name der Session und die bereits erwähnte zufällige Zeichenfolge der
Session-ID gespeichert. Der Name der Session ist eine frei wählbare
Bezeichnung, die uns später als Variable bei der Auswertung der
Sessiondaten im PHP-Script zu Verfügung stehen wird. Per Voreinstellung
lautet der Name der Variable bei PHP 4: PHPSESSID. Die Länge der von PHP 4 produzierten Session-ID beträgt 32 Zeichen. Als
Ergebnis können wir annehmen, dass bei der Initialisierung einer
Session, PHP einen Cookie mit etwa dem folgenden Inhalt beim Benutzer
hinterlegt:
PHPSESSID=edb0e8665db4e9042fe0176a89aade16
Der linke Teil des Strings wird als Sessionname
und der rechte - die zufällige Zeichenkette
"edb0e8665db4e9042fe0176a89aade16" - als Session-ID bezeichnet. Diese
Session-ID ist der Schlüssel zur Wiedererkennung des Benutzers und zur
Restaurierung der von ihm gesetzten Daten. Die Session-ID repräsentiert
bei PHP 4 - per Voreinstellung - eine temporäre Datei im Filesystem des
Servers. Auf unixoiden Betriebssystemen wird die PHP-Sessiondatei
standardmäßig im Verzeichnis /tmp/ erstellt. In der php.ini - der globalen Konfigurationsdatei - oder ein der Webserverkonfiguration läßt sich dieser Wert natürlich verändern. Diese Session-Datei bekommt im Namen den Prefix sess_, so dass das Ergebnis im Filesystem des Servers folgendermaßen aussehen kann:
goosh@warpcore:~> ls /tmp/ -l
insgesamt 0
-rw------- 1 wwwrun www 0 Apr 17 18:00 sess_edb0e8665db4...
In dieser Datei kann ein PHP-Script Benutzerdaten
ablegen - z.B. die Artikelnummer und die Anzahl der bestellten Artikel
für einen Warenkorb oder einfach nur ob ein Benutzer sich authorisiert
hat und Zugriff auf eine Webseite hat. Dadurch dass der Browser
den Inhalt des Cookies bei einem Request mitschickt, ist es möglich den
Benutzer über mehrere Webseiten zu authentifizieren oder die vom
Benutzer gesetzten Variablen von einer Seite auf eine andere zu
übernehmen. Die Manipulation dieser Session-Datei bleibt nur dem
serverseitig ausgeführtem PHP-Script vorbehalten. Der Client weiß nicht
welche Daten von dem Script gespeichert werden und er kann keinen
mittelbaren Einfluß auf diese Daten nehmen. Ausnahme bildet hier die
Änderung oder Löschung dieser Daten durch den Administrator oder durch
ein auf dem Server laufendes Script mit entsprechenden (Datei-)Rechten.
Merke:
- In der Voreinstellung benutzt PHP 4 temporäre Cookies um Session-IDs zu speichern.
- Defaultname der Session ist PHPSESSID.
- Eine mit PHP 4 generierte Session-ID ist 32 Zeichen lang (MD5 digest).
- Sessiondateien werden im Ordner /tmp/ gespeichert.
- Sessiondateien können nur serverseitig geändert werden.
|