phpbar.de logo

Mailinglisten-Archive

[php] Session Handling

[php] Session Handling

Niels Jäckel niels.jaeckel at silice.de
Sam Okt 21 15:42:23 CEST 2006


Hallo Ralf,

> 1a) Der Session Cookie ist nur für Dauer der Sitzung gültig.
>
> 1b) Der Session Cookie ist auch nach dem Schließen des Browsers
>     weiterhin gültig.

das kommt ganz auf den Einsatzzweck an. Normalerweise reicht 1a) aus. Doch  
gelegentlich möchte man ja eine "remember my login"-Funktionalität  
einbauen (1b)


> 2a) Wenn der Session Cookie nicht akzeptiert wird, wird die Session ID
>     an alle Links eurer Seite angehängt (IMHO großes
>     Sicherheitsproblem).
>
> 2b) Wenn der Session Cookie nicht akzeptiert wird, gibt es keine
>     Alternative. Zum Einloggen ist somit zwingend ein Cookie zu
>     akzeptieren

Kommt wiederum drauf an. Da ich Sessions grundsätzlich nur dann einsetze,  
wenn sie gebraucht werden (siehe auch nächster Abschnitt) lasse ich keine  
SIDs an die URL ran. Da musst du halt mit dir vereinbaren, wie  
sicherheitskritisch die Anwendung ist. Bei meinem Online-Banking würde ich  
angehangene SessionIDs als schweren Fehler einstufen - wenn es sich nur um  
ein kleines Forum handelt mag das gehn.


> 3a) Jeder Besucher der Seite bekommt immer einen Session Cookie
>     zugeteilt.
>
> 3b) Es werden nur Session Cookies verteilt, wenn sie wirklich notwendig
>     sind. Ich nenne es mal den Ansatz der Cookie-Sparsamkeit.

Wie schon oben beschrieben Sessions nur dann, wenn auch nötig  
(Login-Bereich). Dann leuchtet dem Nutzer der Grund für das Cookie auch  
ein.


> 2. Ist der Ansatz der Cookie-Sparsamkeit mit dem in PHP integrierten
>    Session Handling überhaupt realisierbar? Bei session_start() wird
>    ja immer eine Session erstellt und ohne session_start() kann nicht
>    auf $_SESSION zugegriffen werden.

Eine einfache Lösung ist folgende:
   - Alle abgesicherten Skripte in einen Ordner (z.B. secure/ )
   - Alle Skripte dieses Ordners includen die Session-Funktionalität (z.B.  
start_session.php )
   - Auch das Login-Skript mit in den Ordner

Und schon hast du nur dann Sessions, wenn sie gebraucht werden. Wenn du  
ein CMS einsetzt könnte man das ähnlich über den Pfad regeln oder muss  
jeder Seite (irgendwie) ein entsprechendes Attribut geben (braucht Session  
oder nicht)


> 3. Gibt es Einschränkungen und Probleme bei der Verwendung vom in
>    PHP integrierten Session Handling, auf die man nicht unbedingt
>    sofort stößt.

Ich hatte noch nie Probleme damit. Man muss nur aufpassen, dass man den  
Session-Pfad explizit setzt (sonst /tmp --> für alle lesbar) und am besten  
(sofern unterhalb vom DocRoot) ne .htaccess mit "deny from all" reinlegen


Grüße,
Niels

php::bar PHP Wiki   -   Listenarchive