Sven Rautenberg: Code zur Ermittlung der IP-Adresse noch zeitgemäß?

Beitrag lesen

Moin!

Hallo Sven,

Die IP, die dein Server sieht, ist die einzig entscheidende. Und die steht in REMOTE_ADDR

Abgesehen davon: Was brächte es dir, zu wissen, dass die "echte" IP 192.168.1.2 lautet?

Mir geht es darum, bei Einträgen, die uns Besucher hinterlassen, die eindeutige IP-Adresse mit ab zu speichern.

Dann willst du nur die REMOTE_ADDR speichern, und nix anderes.

Zum einen: In X_FORWARDED_FOR steht nicht nur eine einzige IP, sondern eine Liste aller Zwischenstationen, kommagetrennt. Wobei sich Zwischenstationen nur eintragen, wenn sie konfiguriert sind, das zu tun, und eine nachfolgende Zwischenstation das nicht wieder rückgängig macht. Dein Code geht auf diese Möglichkeit nicht ein.

Zweitens: In einem "normalen" Usecase wird der am Netzwerkausgang stehende Proxy dort zwar die IP des echten internen Clients eintragen, aber weil IPv4-Adressen knapp sind, dürfte dieses interne Netz mit Sicherheit IPs aus dem privaten Bereich enthalten. Denen kann man aber nicht ansehen, wem sie gehören. Wenn du also anhand der IP irgendwelche Maßnahmen rechtlicher Natur ergreifen wolltest, brauchst du als ersten Ansatzpunkt den Provider. Und der steht nicht hinter einer privaten Netzwerk-IP, sondern hinter der REMOTE_ADDR.

Drittens: Der Wert X_FORWARDED_FOR wird ausschließlich vom User geliefert. Was hindert jemanden daran, dort einfach Blödsinn reinzuschreiben? Es hat schon Fälle gegeben, wo aufgrund dieser Angabe, sofern sie "127.0.0.1" war, auf Webseiten ein Admin-Menü eingeblendet wurde, ohne weiteres Passwort. Ziemlich leicht zu hacken, wenn man's weiß. Aber nicht unmöglich rauszufinden, wenn man's nicht weiß. Und beliebig schnell zu ändern, sogar ohne dass der Angreifer sich neu verbinden und auf eine neue dynamische IP hoffen muss. Es ist also auch ungeeignet, um deswegen irgendwelche Sperren zu aktivieren.

- Sven Rautenberg