Bla: Sessions und Sicherheit

Beitrag lesen

Nein, die üblicherweise richtige Konfiguration vorausgesetzt. Der Webserver gibt den Quellcode von Skripten generell nicht aus,

Ist die Konfiguration über allow_url_fopen einzustellen?

Nein, mit "richtiger Konfiguration" meine ich, dass der (Ziel-) Webserver PHP-Skripte als solche erkennen und ausführen muss. Das ist bei eigentlich jedem Webserver der Fall, sonst würden PHP-Skripte ja nicht funktionieren, deshalb "üblicherweise".

Wenn also deine PHP-Skripte im Browser nicht als Quellcode angezeigt werden, dann kann sie auch niemand sonst mittels HTTP auslesen. fopen("http:…") macht genau das Gleiche wie ein Webbrowser. Ähnliches gilt füt FTP: Ist der FTP-Zugang passwortgesichert, kann niemand, der das Passwort nicht kennt, per FTP den Quellcode auslesen. fopen("ftp:…") macht genau das Gleiche wie ein FTP-Client.

Cookies kannst du dir im Grunde einfach als Dateien vorstellen, jede Datei hat einen Namen, mit dem sie angesprochen wird, und einen Inhalt. Auf verschiedenen Rechnern kann es Dateien mit dem gleichen Namen, aber unterschiedlichem Inhalt geben.

Ja, das weiß ich. Das Problem ist ja nur, standardmäßig wird das Session-Cookie als PHPSESSID abgelegt, wenn das so in session.name in der php.ini konfiguriert wurde. Demnach könnte ja kein Cookie für einen zweiten Benutzer abgelegt werden.

Wo, im Browser? Nein, das geht in der Tat nicht. Aber wie oft meldest du dich gleichzeitig bei demselben Dienst mit mehr als einem Benutzernamen an? Und was im Browser von deinem Nachbarn gespeichert ist, interessiert deinen Browser nicht.

Den Server andererseits interessiert der Cookiename nicht, er benutzt ihn nur, um vom Browser den Cookieinhalt zu bekommen. Die einzelnen Sitzungen unterscheidet der Server anhand der Cookieinhalts.

Daran hatte ich auch gedacht, mit header() weiterzuleiten. Ich dachte nur, es gäbe eine Alternative ohne Weiterleitung.

Du könntest versuchen, bereits mit der Ausgabe des Formulars ein Cookie zu setzen. Ist es beim Empfang der Formulardaten (=Loginversuch) nicht zu sehen (=hat der Benutzer Cookies abgeschaltet), könntest du nur die Fehlermeldung ausgeben, nicht das Formular. Setzt du noch einen Verweis dazu, der auf das Formular zeigt ("Hier erneut einloggen, sobald Cookies eingeschaltet"), stehen die Chancen IMHO recht gut, dass der Benutzer darüber das Formular wieder aufruft und somit seinen Keks verpasst bekommt.