2013-08-19 9 views
6

Nun, der Titel sagt es im Grunde.

Aber für weitere Informationen. .

Diese Methode funktioniert aber. .

$ip = '1.1.1.1'; 
curl_setopt($handle, CURLOPT_HTTPHEADER, array("REMOTE_ADDR: $ip", "X_FORWARDED_FOR: $ip")); 

Es fügt nur diese beiden keys auf dem $_SERVER Array

  • HTTP_REMOTE_ADDR
  • HTTP_X_FORWARDED_FOR

Der Schlüssel REMOTE_ADDR noch gleich bleibt.

Kann REMOTE_ADDR geändert werden? Die Antwort here sagt NO. Aber ein Kommentar sagt auch Es kann jedoch nicht die reale IP-Adresse des Benutzers sein, weil es durch Proxys und andere Methoden versteckt sein kann. Aus diesem Grund ist die allgemeine Regel, für ein Sicherheitsmerkmal nicht auf $_SERVER['REMOTE_ADDR'] angewiesen zu sein.

Mit all dem beiseite gibt es eine Curl PHP-Methode, um auch zu verstecken/maskieren/ändern die IP? (Jede andere PHP-Methode abgesehen von dem obigen Code tun würde.)

UND

Gibt es eine Möglichkeit für die Bekämpfung des Verfahrens OR Gibt es eine Möglichkeit, den IST REAL IP eines zu bekommen Benutzer?

Prost!

+4

Wenn die Website Ihre zu Kontrollen Verbindungs ​​für 'HTTP_X_FORWARDED_FOR' und setzt dies die richtige IP über' REMOTE_ADDR' ist man dann habe es erfolgreich vorgetäuscht. Dies hängt jedoch davon ab, wie die Website programmiert ist. – fire

Antwort

17

Nr.$_SERVER['REMOTE_ADDR'] ist die tatsächliche physische IP-Adresse, die der Client für die Verbindung mit dem Webserver verwendet, wie durch einen dreifachen TCP-Handshake bestätigt. Es gibt keine Möglichkeit, dies zu fälschen, indem Sie einfache HTTP-Header festlegen. Sie können auch nicht den Webserver/PHP diesen Wert mit etwas anderem überschreiben lassen. $_SERVER['REMOTE_ADDR'] wird über TCP-Verbindungsinformationen, Punkt festgelegt.

Um tatsächlich eine IP-Adresse zu spoofen, müssen Sie viel tiefer in die tatsächliche Netzwerkebene gehen und eine gewisse Kontrolle über Netzwerkgeräte/man in den mittleren Positionen/proxies/whatnot haben, um tatsächlich eine TCP-Verbindung herstellen zu können von einer anderen IP-Adresse als der, von der Sie es einrichten.

Gibt es eine Möglichkeit, der Methode entgegenzuwirken ODER Gibt es eine Möglichkeit, die tatsächliche reale IP eines Benutzers zu erhalten?

Nein. "Die tatsächliche IP-Adresse des Benutzers" ist die Adresse, von der Ihr Webserver die Verbindung erhalten hat, Punkt. Es gibt keine andere Adresse für Sie. Der Client verbindet sich mit einer bestimmten IP-Adresse mit Ihrem Server, dies wird durch einen dreifachen TCP-Handshake bestätigt, das ist die einzige Adresse, die Sie für diesen Client kennen. Dieser Client kann ein Proxy oder ein NAT-Router (d. H. Ein Proxy) oder etwas anderes sein, Sie wissen einfach nicht, und es sollte auch keinen Unterschied für Sie machen.

+2

Ich fühle, dass es falsch ist, wenn ich deiner Antwort nicht traue. Vielen Dank! –

0

Wenn der Client einen Browser hinter einem Proxy verwendet, wird die $_SERVER['REMOTE_ADDR'] die Adresse der Proxy-IP sein. Die Remote-Adresse ist die IP des Computers, der die Verbindung herstellt.

Wenn die Proxy-Header verwendet, um anzuzeigen, wenn die Verbindung in Auftrag anderer Maschinen durchgeführt wird, können Sie diese Header verwenden, um die IP-Adresse des Browsers hinter dem Proxy zu bestimmen.

  • Einige dieser HTTP-Header sind auf Umgebungsvariablen umgewandelt wie $_SERVER['HTTP_X_FORWARDED_FOR'], $_SERVER['HTTP_X_FORWARDED'], $_SERVER['HTTP_FORWARDED_FOR'] und $_SERVER['HTTP_FORWARDED']
  • Sie überprüfen können, ob einige dieser Variablen wurden von dem Server und (versuchen) bestimmen die IP definiert des Browsers hinter dem Proxy.

Beachten Sie, dass die RFC 6648 veraltet die X-* Header und die RFC 7239 veraltet X-Forwarded-* durch einen Forwarded Header definieren.

können Sie prüfen, einige Antworten auf