Heim > Artikel > Backend-Entwicklung > Können wir die Benutzer-IP auf der Webserverseite der Website wirklich begrenzen?
Ich habe gerade eine Frage zur Nginx-Weiterleitung und zum Ändern der Weiterleitungsquellen-IP gestellt. Da die IP der Zugriffsanforderungsquelle nach Belieben geändert werden kann, kann der IP, die wir auf dem Webserver erhalten haben, nicht vollständig vertraut werden tun? Um die tatsächliche IP des Benutzers einzuschränken, oder ist dieser Weg wirklich nicht machbar?
Ich habe gerade eine Frage zur Nginx-Weiterleitung und zum Ändern der Weiterleitungsquellen-IP gestellt. Da die IP der Zugriffsanforderungsquelle nach Belieben geändert werden kann, kann der IP, die wir auf dem Webserver erhalten haben, nicht vollständig vertraut werden tun? Um die tatsächliche IP des Benutzers einzuschränken, oder ist dieser Weg wirklich nicht machbar?
Wurde Nginx von [Ihnen] erstellt oder muss es von [gesperrten Benutzern] erstellt werden?
HTTP_X_FORWARD_FOR kann gefälscht werden, REMOTE_ADDR kann jedoch nicht geändert werden.
Wenn es von [gesperrtem Benutzer] erstellt wurde:
Sie können die IP des Nginx-Servers über $_SERVER["REMOTE_ADDR"] abrufen und ihn direkt blockieren.
Wenn [Sie] Nginx erstellt haben:
Obwohl die IP des Benutzers über $_SERVER["HTTP_X_FORWARD_FOR"] abgerufen werden kann, kann sie gefälscht sein.
<code>proxy_set_header X-Forward-For $remote_addr</code>
Der beste Weg ist, private HTTP-Header hinzuzufügen. Wenn Nginx weiterleitet, fügen Sie private HTTP-Header hinzu. Ich weiß nicht, was gefälscht werden muss.
<code>proxy_set_header X-GAGAGA $remote_addr</code>
Darüber hinaus wird das HL-System der Proxy-Plattform, die derzeit von Alibabas WW verwendet wird, nicht streng durch HTTP_X_FORWARD_FOR gefiltert, und sorgfältig konstruierte Anforderungen können injiziert werden. . . (Jetzt wurde die neue Version behoben)
Was Fälschungen betrifft: Wenn Sie Linux/Unix/OSX verwenden, kann der integrierte Curl dies tun:
<code>curl abc.com/test.php -H "X-FORWARD-FOR:8.8.8.8"</code>
Wenn keine Filterung erfolgt, gibt es eine Funktion, mit der direkt bestimmt werden kann, ob über IP auf die schwarze Liste gesetzt oder IP-Betriebsprotokolle im Hintergrund aufgezeichnet werden sollen:
<code>#想注入就注入 curl miaoqiyuan.cn/test.php -H "X-FORWARD-FOR:' or 'a'='a" #想XSS就XSS curl miaoqiyuan.cn/test.php -H "X-FORWARD-FOR:alert('a')"</code>
Ich habe mir bei der Konfiguration von Nginx eine Lösung überlegt: Fügen Sie „proxy_set_header X-Forward-For $remote_addr“ hinzu. Dann ruft $_SERVER["HTTP_X_FORWARD_FOR"] die echte IP des Benutzers ab und schränkt dann die IP im Programm ein.