Gute Idee ... Sch.. Idee - SESSIONS ?

NReim

Grünschnabel
Ich würde gerne mal mit euch etwas Diskutieren .... undzwar folgendes

SESSIONS und deren Speicherort ...

Über den befehl : ini_set ('session.save_path', 'mein/eigener/pfad' );

möchte ich meine Sessions in einem eigenem Verzeichniss speichern. dieses Verzeichniss liegt aber nicht auf dem DOCUMENT_ROOT sondern eine ebene höher. so das man mit dem Browser nicht an dieses verzeichniss ran kommt ...

Verdeutlichung :
DOCUMENT_ROOT = /der/pfad/zu/meiner/root/ -hier die root -

mein session verzeichniss liegt jetzt so : /der/pfad/zu/meiner/session_hj9f834rj9f
PS: Zahlen und buchstaben im verzeichniss sollen evtl. hacks erschweren ...

Wieso warum weshalb : meine erklärung !

Mein momentaner Wissensstand ist folgender .
Wenn man sessions auf einem Server startet werden diese wen kein spezieller pfad vorgegeben wird in den Globalen Tempöraren Ordner auf dem Server abgelegt, in diesen Topf haben alle
Clients mit denen sie sich den Server Teilen zugriff, dort werden also alle Sessions die auf diesem Server gestartet und abgerufen werden gespeichert. Findige Leute könnten nun versuchen sich aus diesem Tepörären
Ordner zu bedienen um Die Sessiondaten anderer Benutzer zu missbrauchen.

Die Idee die ich mit meiner Variante anstrebe ist folgende:
in meinem eigenem verzeichniss habe ich zum einen kontrolle darüber wann die sessions zerstört werden sollen weil dieses verzeichniss nicht vom garbage controller gereinigt wird, und zum anderen habe nur ich ( per FTP ) bzw. der Server der ja das script ausführt zugriff in dieses verzeichniss.

Nun die frage an euch:
Stehe ich damit jetzt völlig auf dem Schlauch oder ist dies eine akzeptable lösung ..

ich bitte um Konstrutive nicht um Destruktive Kritik ... Danke ...
 
Hi, deine Lösung hört sich doch ganz gut an, ich verwende zum Beispiel das gleiche Verfahren, damit keine anderen Benutzer auf dem selben Server auf die Sessiondateien zugreifen können. Wichtig ist, dass das Verzeichnis in dem die Dateien gespeichert werden die richtigen Zugriffsrechte hat, damit die Dateien vor allen anderen Benutzern geschützt sind.

Bist du dir sicher, dass die Garbage Collection nicht in deinem Verzeichnis aufräumt? Soweit ich weiss, werden veraltete Sessions auch dann gelöscht, wenn du sie in einem eigenen Verzeichnis speicherst.
 
Zuletzt bearbeitet:
Hallo EvilO

Danke erstmal für deine Antwort. Schön zu hören das meine idee nicht ganz bescheuert ist :) .

Also der Garbage Controller räumt da schon soweit auf, das ist schon richtig. Aber er macht es auch nur nach der Zeit die ich vorgegeben habe.

zur erklärung:
Ich hatte bevor ich ein eigenes verzeichniss für die sessions genommen habe immer das problem gehabt das der garbage controller irgendwie willkührlich zugeschlagen hat, so nach dem motto das einemal hat die session 3 stunden gehalten das nächstemal waren es 7 stunden. Und das obwohl ich die session livetime auf 10 stunden eingestellt hatte ... Nunja und im eigenem verzeichniss klappt das irgendwie besser ! Oder ich hatte vorher irgendeinen anderen fehler gemacht ....
Obwohl alle befehle die selben geblieben sind, ich habe lediglich das eigene verzeichniss angegeben ...

Bezüglich der Ordner berechtigung:
Was wäre denn die richtige cmod einstellung für ein solches verzeichnis kannst du mir da einen tipp geben ?
 
Ich denke bei Shared Hosting, wie viele Webseiten auf einem Server laufen ist das eine ganz praktische Sache. Immerhin muss ja Apache vollen Zugriff auf /tmp (den Default-Speicherort fuer Session-Files) haben damit Sessions funktionieren koennen.
Und da auch PHP mit Apache-Rechten laeuft hat es somit auch Zugriff, wenn nicht irgendwie unterbunden.

Entsprechend hat jede Seite theoretisch Zugriff auf die Sessions anderer Seiten, was natuerlich nicht gewuenscht ist.

Ich selbst hatte so eine Loesung wie Du eine zeitlang im Einsatz, hatte aber Gruende es aufzugeben. Welche dies waren weiss ich jetzt nicht mehr.
Ich bin nun auf jeden Fall dazu uebergegangen komplett das Session-Handling zu uebernehmen und habe nun eine Klasse die meine Sessions in der Datenbank ablegt.
Fuer die Applikation erfolgt dies vollkommen transparent, wie jeder andere auch arbeite ich schlichtweg mit $_SESSION. Nur dass eben im Hintergrund was anderen passiert als "im Original".
 
Hi,
hast du zufällig noch irgendwo diese Klasse :-D?

PS: Wie kann man rausfinden ob mein Server Teil eines sharing webhosting ist (ohne den Service damit zu belästigen^^)?
 
Die unterschiedliche Lebensdauer der Session Dateien liegt am Session Garbage Collector von PHP, der wird nämlich nicht bei jedem Seitenaufruf durchgeführt, sondern ist über die Ini-Datei einstellbar. Mit folgendem Code kann man zum Beispiel sicherstellen, das abgelaufene Sessiondateien beim nächsten Aufruf der Website entfernt werden, das wirkt sich allerdings negativ auf die Performance der Seite aus:
PHP:
ini_set('session.gc_probability', 1);
ini_set('session.gc_divisor', 1);
Allerdings wird auch dann nur der Garbage Collector ausgeführt, wenn jemand die Website aufruft.
 
Zurück