Ermitteln der IP-Adresse des Clients, der über einen Proxy verbunden ist

8

Gibt es eine Möglichkeit, die IP-Adresse eines Clients zu erfassen, der über einen Proxy-Server mit Ihrer Website verbunden ist?

Das gesamte Setup ist ein internes LAN und über den Systemadministrator habe ich auch die Kontrolle über den Proxy-Rechner. Ich benutze PHP5 für die Website-Server-Seite.

Ich habe $_SERVER['REMOTE_ADDR'] in PHP versucht, aber diese Variable speichert nur die IP-Adresse des Proxy.

Irgendwelche Ideen?

    
Kshitij Saxena -KJ- 14.08.2009, 06:31
quelle

4 Antworten

10

Die Standardlösung (in PHP) ist:

%Vor%

Aber wie die erste Antwort sagt, hängt alles davon ab, dass der Header tatsächlich gesetzt wird.

    
user138512 14.08.2009, 11:03
quelle
12

Das hängt vom Proxy ab. Einige Proxies fügen einen Header hinzu, der die ursprüngliche IP-Adresse angibt, den X-Forwarded-For-Header, aber da die meisten Unternehmen Proxys verwenden, um die interne Netzwerkstruktur zu verbergen, die selten ist. Wenn dies der Fall ist, wirst du es nicht leicht machen können.

Wenn Sie die Kontrolle über den Proxy haben, ist es an der Zeit, die Proxy-Dokumentation zu lesen, um zu sehen, wie dieser Header hinzugefügt wird.

    
blowdart 14.08.2009 06:37
quelle
1

X-Forwarded-For ist die einzige Möglichkeit, die IP-Adresse des Clients zu erhalten. Überprüfen Sie, ob es eine Möglichkeit gibt, das in Ihrem Proxy zu aktivieren.

Bei einigen Proxyservern haben Sie die Möglichkeit, mit einem vorhandenen XFF-Header umzugehen (wenn die Anforderung mehrere Proxies durchläuft). Hier ist, was Sie beachten müssen,

  1. Wenn die Client-Adresse aus Sicherheits- / Vertrauensgründen besteht (wie ACL oder Ratenbegrenzung), sollte der vorhandene XFF-Header durch einen Proxy fallengelassen werden.
  2. Wenn die Adresse nur zur Information dient (Logging, Debugging), sollten Sie die Peer-Adresse an existierendes XFF anhängen, getrennt durch Komma. Die erste IP in der Liste wäre die IP des Clients.
ZZ Coder 14.08.2009 07:01
quelle
0

Dieser Code kann verwendet werden, um die IP-Adresse des Clients zu erhalten, der sich über einen Proxy verbindet.

%Vor%

Aber es erkennt nur, wenn Proxy transparent ist.

Nachfolgend finden Sie die Informationen zum HTTP-Proxy:

  1. Keine Proxy-Server verwenden:

    • request.getRemoteAddr() = IP-Adresse des Clients
    • request.getHeader("HTTP_X_FORWARDED_FOR") = Kein Wert oder Keine Anzeige
  2. Verwenden Sie transparente Proxies:

    • HTTP_X_FORWARDED_FOR = Echte IP-Adresse des Clients
  3. Verwenden Sie normale anonyme Proxys:

    • request.getRemoteAddr() = IP-Adresse des Proxy-Servers
    • HTTP_X_FORWARDED_FOR = IP-Adresse des Proxy-Servers
Tarun Kumar 19.04.2012 07:27
quelle

Tags und Links