Client-IP über PHP abfragen, wenn ein CDN im Einsatz ist

Hin und wieder kommt es vor, dass eine Website die IP-Adresse des Client abfragen muss, beispielsweise wenn eine Funktion speziell für die eigene IP getestet werden soll. Üblicherweise lässt sich diese über folgenden Befehl auslesen:

$_SERVER[‚REMOTE_ADDR‘]

Diese IP stimmt allerdings nicht mehr, sobald beispielsweise ein Content Delivery Netzwerk (CDN) zwischengeschaltet ist. In dem Fall wird hier lediglich die IP des CDN-Servers ausgegeben, der die Verbindung zum eigenen Webserver herstellt.

Client-IP im HTTP Header übergeben

Glücklicherweise wird die IP des Client für gewöhnlich durch das CDN übermittelt. Hierfür wird im HTTP Request des CDN eigens ein Header angelegt, der die Client-IP beinhaltet. Bei Cloudflare beispielsweise lautet dieser CF-Connecting-IP, wie man auf der Support Page nachlesen kann.

Header über PHP auslesen

Um diese Daten nun auszulesen, muss via PHP auf den Request Header zugegriffen werden. Diesen findet man in der _SERVER-Variable. Darin kann nun der entsprechende Header angegeben werden. Dabei ist zu beachten, dass alle Bindestriche (-) durch Unterstriche (_) ersetzt werden müssen, und der gesamte String in Versalien sein sollte. In unserem Fall sähe dies so aus:

$_SERVER[‚HTTP_CF_CONNECTING_IP‘]

Fazit

Auch wenn ein CDN zwischen dem Client und dem Server liegt, ist es möglich, die ursprüngliche IP des Client auszulesen. Das CDN legt hierfür extra einen Header an, den es im HTTP Request mitsendet. Dieser kann anschliessend via PHP ausgelesen werden.

Bei Fragen und Anregungen freuen wir uns immer über ein Kommentar.

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.