de.comp.lang.php.* FAQ

29.15. Warum verwendet PHP nicht die IP-Nummer des Browsers als Schutz gegen eine Übernahme der Session?

Antwort von Kristian Köhntopp

PHP versucht, Sessions Benutzern zuzuordnen. IP-Nummern sind konstruktionsbedingt immer den Netzwerkinterfaces von Rechnern und nicht Benutzern zugeordnet. Das ist eine vollkommen andere Sache und die Auswertung von IP-Nummern würde zu Fehlern im Betrieb führen.

  • Ein Rechner kann mehr als einen Benutzer haben. Jeder Benutzer auf diesem Rechner würde mit derselben IP-Nummer arbeiten. Ein Beispiel ist der Rechner kruuna.helsinki.fi:

    kris@valiant:~ > finger @kruuna.helsinki.fi  | wc -l
        114
    

    Auf diesem Rechner sind zum Messzeitpunkt über 110 Benutzer angemeldet gewesen, die alle über dieselbe IP-Nummer arbeiten.

  • Ein Rechner kann mehr als einen Benutzer repräsentieren. Bei vielen Providern greifen Benutzer über Proxy-Server auf das Netz zu. Nach außen scheinen alle Zugriffe aus dem Netz des Providers von dem Proxy-Server zu kommen. Wenn der Proxy des Providers die Anonymisierungsfunktionen eingeschaltet hat, die z.B. der meistverwendete Proxy, squid2, ab Werk mitbringt oder die Programme wie WebWasher und JunkBuster bieten, dann sind diese Anwender auch durch weitere Header nicht zu unterscheiden.

  • Die sichtbare IP-Nummer eines Benutzers kann während der Session wechseln. Viele Proxy-Server arbeiten in einem Cache-Verbund mit Lastverteilung. Die nach außen sichtbare IP-Nummer eines Anwenders wird je nach Lastsituation im Cache-Verbund diejenige IP-Nummer des am wenigsten ausgelasteten Proxy-Servers sein.

  • Die tatsächliche IP-Nummer eines Benutzers kann während der Session wechseln. Viele Anwender arbeiten mit Timeout bei Inaktivität und dynamisch zugeteilten IP-Nummern. Lässt ein Anwender seinen Browser einige Minuten ungenutzt stehen, wird sich die IP-Verbindung abbauen. Dem Anwender wird beim Neustart der Netzverbindung unter Umständen eine neue, andere IP-Nummer zugeteilt.

Auch eine Auswertung der Headerzeile X-Forwarded-For, die manche Proxies setzen, ist nicht sinnvoll:

  • Diese Headerzeile kann gesetzt sein, muss jedoch nicht vorhanden sein. Squid, Webwasher und Junkbuster entfernen diese Headerzeile, wenn dies gewünscht wird.

  • Die Information in dieser Headerzeile ist weder authentisch noch eindeutig: Die verwendete IP-Nummer kann die IP-Nummer eines RFC-Netzes sein - es gibt also sehr viele Maschinen auf der Welt mit der IP-Nummer 192.168.1.1.

Valid HTML 4.01! Valid CSS!

29.15. Warum verwendet PHP nicht die IP-Nummer des Browsers als Schutz gegen eine Übernahme der Session?
http://www.php-faq.de/q/q-sessions-ip.html
Archiv der de.comp.lang.php-FAQ Dies ist eine Archivseite von 2008 und wurde seitdem nicht geändert. Das dclp-FAQ-Team