Moin,
Gehe ich recht in der Annahme, dass zunächst ausprobiert wird, ob der User Cookies zuläßt und dann kommt die URL an die Reihe?
Ja, wenn beim ersten Aufruf kein Session-Cookie gesetzt ist, wird versucht ein Cookie zu setzen und das URL-Rewriting wird aktiviert. Bei nachfolgenden Seitenaufrufen ist dann entweder das Cookie gesetzt und URL-Rewriting wird abgeschaltet oder aber die Session-ID ist über den URL-Parameter bekannt und es wird weiter lustig rewriting gemacht.
Heisst das, PHP guckt in dem superglobalen Array $_COOKIE nach, ob in $_COOKIE["PHPSESSID"] oder wie immer der Name für die SessionID auch lautet, mit einem brauchbaren Wert versehen ist?
So in etwa.
Der vorstehende Absatz ist mir ein Buch mit sieben Giebeln:
- Wenn du via ini_set das URL_Rewriting abschaltest, muss dein User Cookies erlauben, oder die gesamte Autentifizierung funktioniert überhaupt nicht. Richtig oder falsch?
Die Sessions funktionieren dann nicht, wenn du nicht selber an den richtigen Stellen die Session-ID im URL mitschleppst, richtig.
- Meinst du mit Schreibarbeit bei den Links, dass du bei den Links, wo du mit Session-Variablen arbeitest, diese in dem Fall, dass der User cookies nicht erlaubt, halbautomatisch anhängst.
Also in etwa so:
$url = "/link/auf/eine/interne/datei.php";
if(!$COOKIE["PHPSESSID"]) {
$url .= "?id=" .session_id();
}
So in etwa.
Und wenns nach draussen geht, dann läßt du die sessionID eben weg? Und ebenfalls dann, wenn der Link auf eine interne Seite (.php) geht, bei der keine Sessions benötigt werden?
Ja. Ja.
Gehe ich recht in der Annahme, daß das Referer-Problem darin besteht, daß im Falle eines automatischen URL-rewritings durch PHP die session_id auch an eine fremde URL weitergeben würde?
Ja.
Ich habe noch nie verstanden, warum GMX diese nervige Seite dazwischen hat. Nun weiß ich, es hat mit sessions zu tun, aber verstanden habe ich es nicht :-(((
Du hast dich am Anfang bei GMX eingeloggt und eine Session-ID bekommen. So lange die Sitzung läuft (== bis du auf Logout klickst oder der timeout zuschlägt) kann _jeder_ der im Besitz dieser Session-ID ist, deine aktuelle Sitzung benutzen, ganz genau so, als ob er sich bei GMX als du eingeloggt hätte. Er könnte deine Mails lesen, löschen, unter deinem Absender selbst welche verschicken, lustig in den von dir angegebenen persönlichen Daten rumstöbern (deine Post-Addresse etwa oder auch das Addressbuch) und wahrscheinlich auch das Passwort ändern.
Innerhalb von GMX hängt die Session-ID an allen Seiten dran die du aufrufst. Wenn du jetzt von dort aus einem Link folgst oder dein Browser ein Bild/Stylesheet/sonstwas lädt, wird er mit sehr hoher Wahrscheinlichkeit den kompletten URL der aktuellen Seite (mit Session-ID!) als Referer: senden. Würdest du also von dort aus Ressourcen von ausserhalb GMX direkt aufrufen, würde der jeweilige Server mit sehr hoher Wahrscheinlichkeit deine Session-ID erfahren und könnte dann alles im vorangegangenen Absatz gesagte tun.
--
Henryk Plötz
Grüße aus Berlin