Moin!
Cookies sind dein Freund.
Ist wahr? Wird das denn gelöscht, sobald die Session beendet wird?
Löse dich vom Gedanken, dass du das Ende der Session irgendwie bestimmen könntest. Das kannst du nicht.
Jeder, der deinen Server vom groben Mechanismus her kennt (da reicht ein einziger Request), sieht sofort, dass du Sessions verwendest. Das bedeutet: Er kann problemlos eine _beliebige_ Session-ID erzwingen, indem er einfach in der URL die passenden Parameter angibt.
Daraus folgt: Die Tatsache, dass jemand eine Session-ID hat, besagt gar nichts. Sie sorgt lediglich dafür, dass die zugeordneten Session-Daten in $_SESSION gepackt werden.
Natürlich könnte man auf diese Weise ein wenig ID-Raten betreiben. Allerdings ist die standardmäßige ID 128 Bit lang (als Hex-Zahl 32 Zeichen). Der Wertebereich ist so groß, dass man eher 6 Richtige im Lotto hat, als einmal richtig zu raten.
Das einzige, was du eben tun solltest, um die Sicherheit dadurch zu erhöhen, dass man eine einmal eröffnete Session nicht nach endlos langer Zeit neu aufrufen kann, ist die Sache mit dem Zeitvergleich _innerhalb der Session_. PHP räumt zwar auch recht grob alte Session-Daten weg, aber das kann dir niemand garantieren, und darauf solltest du dich auch nicht verlassen. Und zweitens solltest du die in der Session enthaltenen Daten löschen, sobald du feststellst, dass der Benutzer sich ausloggen will oder die Session abgelaufen ist, aber noch ein Zugriff erfolgt. $_SESSION=array() löscht dir alle Daten. Damit wird dann auch in der Session-Datei auf dem Server, die die Daten zwischenspeichert, nichts mehr zu lesen sein.
Sogar ausgesprochen doof! Kann ich das nicht irgendwie verhindern?
Teste, ob diese trans_sid-Option gesetzt ist. Wenn ja, verzichte auf die SID-Angabe, wenn nein, setze sie hinein.
Du kannst dir damit behelfen, dass du nur einmal zu Beginn diese Prüfung machst und je nach Ergebnis eine Konstante mySID so definierst, dass sie entweder leer ist (trans_sid ein) oder SID enthält (trans_sid aus). Diese Konstante packst du dann in deine Links hinein.
http://de2.php.net/manual/de/ref.session.php
- Sven Rautenberg
"Beim Stuff für's Web gibts kein Material, was sonst das Zeugs ist, aus dem die Sachen sind."
(fastix®, 13. Oktober 2003, 02:26 Uhr -> </archiv/2003/10/60137/#m338340>)