In PHP ist die übliche Methode zum Erhalten der angeforderten IP im Allgemeinen die Verwendung von drei superglobalen Variablen. Es ist jedoch offensichtlich, dass die drei Methoden zum Abrufen der IP nicht vollständig zuverlässig sind.
$_SERVER['REMOTE_ADDR']; // 客户端与服务器握手IP,如果使用代理则会获取到代理IP $_SERVER['HTTP_CLIENT_IP']; // 代理服务器发送的HTTP头(可伪造) $_SERVER['HTTP_X_FORWARDED_FOR']; // 用户是在哪个IP使用的代理(可伪造)
Wenn der Domänenname nicht per Proxy übertragen wurde, ist REMOTE_ADDR der sicherste Weg. Wenn es sich um ein Netzwerk im Ausland handelt, ist es am sichersten, wenn Cloud-Anbieter zuverlässige Quell-IP-Erfassungsmethoden bereitstellen, wie sie beispielsweise von Google Cloud bereitgestellt werden:
Wenn es keine gefälschte IP gibt, ist X-forwarded-For normalerweise die echte IP des Clients, die Lastausgleichs-IP
Wenn eine gefälschte IP erscheint, leitet Google Cloud den gefälschten Inhalt weiter, das Format ist , die echte IP des Clients, Load-Balancing-IP
Ob es also gefälscht ist oder nicht, wir können die Zeichenfolge mit Kommas abschneiden und den vorletzten X-forwarded-for-Wert finden, um die echte Client-IP zu erhalten.
Wenn der Domain-Name-Cloud-Anbieter keine ähnlichen Domain-Namensinformationen bereitstellt, können wir diese natürlich nicht einfach über superglobale Variablen erhalten.
Wenn der Anbieter der Domain Name Cloud nicht die entsprechenden IP-Informationen zur Anforderungsquelle bereitstellt, können wir auch einen Bestätigungsmechanismus durch Serverinteraktion aushandeln.
Ähnlich: Fügen Sie zur Beurteilung Quell-IP-Informationen zum HTTP-Anforderungsheader hinzu. Da es sich um einen Kommunikationsprozess zwischen Servern handelt, kann der Fälscher den spezifischen Informationsgehalt der Fälschung nicht kennen, sodass eine solche Interaktion normalerweise zuverlässig ist.
Beurteilungslogikprozess
Server A: Fügen Sie die Variable MY_REALIP_c32fsjk234 => „1.2.3.4“ zum HTTP-Anforderungsheader hinzu. Zu diesem Zeitpunkt ist zu beachten, dass der Variablenname nicht zu einfach sein sollte, und das ist auch der Fall Am besten vereinbaren beide Parteien einen Zufallsschlüssel als Variablennamen, ähnlich wie MY_REALIP_c32fsjk234
Akzeptieren von Requester B: Verwenden Sie $_SERVER['MY_REALIP_c32fsjk234'], um zu bestimmen, ob der Anforderungsheader die Variable MY_REALIP_c32fsjk234 enthält. Wenn ja, erhalten Sie die entsprechende IP als die echte IP.
Originallink: https://blog.csdn.net/panguangyuu/article/details/122211682
Empfohlene Lektüre:
Das obige ist der detaillierte Inhalt vonSo erhalten Sie die echte IP mit PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!