Tom: Session-Cookies

Beitrag lesen

Hello,

da geschieht folgendes:

PHP hat einen eingebauten "Müllbeseitiger" für abgelaufene Sessiondateien. Das Ding nennt sich GC (Garbage Controller) und wird im Prinzip bei jedem Ansprechen des Runtime-Systems auch gestartet. Damit nun nicht zu oft aufgeräumt wird, gibt es eine Wahrscheinlichkeit (session.gc_probability) und einen Teiler (session.gc_divisor), die das Anspringen regeln.

Die Sessiondatei wird dann beim Aufräumlauf gelöscht, wenn session.gc_maxlifetime abgelaufen ist. Die Konfigurations-Variable müsste eigentlich "session.gc_minlifetime" heißen, weil vor Ablauf dieser Zeit keine Löschung stattfindet. Der GC prüft dabei nicht, ob die Sessiondatei noch benötigt wird. Er stellt nur fest, ob die Datei innerhalb der "minlifetime" angefasst wurde. Das funktioniert bei Linux schon immer und bei Windows-Hosts erst seit einer neueren PHP-Version. Da musst Du mal nachlesen...

Im Prinzip basiert die "Sicherheit" bei der Session nur auf Obscurity, denn man hat nur einen einzigen Schlüssel. Nimmt man die Zeit hinzu, um die Gültigkeit dieses Schlüssels kurz zu halten, dann vermindert man damit die Trefferwahrscheinlichkeit, eine gültige Session zu finden.

Man sollte also immer drüber nachdenken, ob man nicht zwei Schlüssel vergibt, die gegeneinander verriegelt sind. Erfolgt eine Anfrage untger dem einen Schlüssel (der gerade vergeben ist), ohne dass der andere dazu passt, werden beide Schlüssel deaktiviert und der Fehlversuch im Datensatz des zugehörigen Users registriert.

Wenn Du nicht willst, dass die Sessiondateien gelöscht werden, dann verlege sie in ein Verzeichnis, (mit session.save_path() vor dem Sessionstart), dass Du für das PHP-Runtime gegen Browsen schützt, also das R-Reccht auf das _Verzeichnis_ wegnimmst. Das quittiert der GC damit, dass er gar keine Sessions mehr bereinigt.

Wenn Du nun im Userdatensatz immer die aktive Session einträgst, kannst Du diese beim nächsten Login beseitigen und dann die neue aktive eintragen. Außerdem kannst Du in der Sessiondatei selbst dafür sorgen, dass die Gültigkeit des Schlüssels nicht endlos wird.

Harzliche Grüße aus http://www.annerschbarrich.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau