Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.
X-Forwarded-For header
Der HTTPX-Forwarded-For (XFF)Anforderungsheader ist ein de-facto Standard-Header, um die ursprüngliche IP-Adresse eines Clients zu identifizieren, der über einenProxy-Server mit einem Webserver verbindet.
Eine standardisierte Version dieses Headers ist der HTTPForwarded-Header, obwohl dieser viel seltener verwendet wird.
Warnung:Unsachgemäßer Gebrauch dieses Headers kann ein Sicherheitsrisiko darstellen.Details finden Sie im AbschnittSicherheits- und Datenschutzbedenken.
| Header-Typ | Anforderungsheader |
|---|---|
| Verbotener Anforderungsheader | Nein |
In diesem Artikel
Syntax
X-Forwarded-For: <client>, <proxy>X-Forwarded-For: <client>, <proxy>, …, <proxyN>Ein Beispiel: Eine IPV6-Client-IP im ersten Header, eine IPV4-Client-IP im zweiten Header und eine IPV4-Client-IP sowie eine IPV6-Proxy-IP im dritten Beispiel:
X-Forwarded-For: 2001:db8:85a3:8d3:1319:8a2e:370:7348X-Forwarded-For: 203.0.113.195X-Forwarded-For: 203.0.113.195, 2001:db8:85a3:8d3:1319:8a2e:370:7348Direktiven
<client>Die Client-IP-Adresse.
<proxy>Eine Proxy-IP-Adresse.Wenn eine Anfrage durch mehrere Proxys verläuft, werden die IP-Adressen jedes aufeinanderfolgenden Proxys aufgelistet.Das bedeutet, dass die rechteste IP-Adresse die IP-Adresse des neuesten Proxys ist und die linkeste IP-Adresse die Adresse des ursprünglichen Clients ist (bei gutem Verhalten von Client und Proxys).
Beschreibung
Wenn ein Client direkt mit einem Server verbindet, wird die IP-Adresse des Clients an den Server gesendet und oft in Serverzugriffsprotokollen notiert.Wenn eine Clientverbindung über einen oder mehrere Forward- oder Reverse-Proxys läuft, sieht der Server nur die IP-Adresse des letzten Proxys, was oft wenig nützlich ist.Das gilt besonders, wenn der letzte Proxy ein Load-Balancer ist, der Teil derselben Bereitstellung wie der Server ist.Um eine nützlichere Client-IP-Adresse an den Server zu übermitteln, wird derX-Forwarded-For Anforderungsheader verwendet.
Für eine detaillierte Anleitung zur Verwendung vonX-Forwarded-For siehe die AbschnitteParsing undAuswahl einer IP-Adresse.
Sicherheits- und Datenschutzbedenken
Dieser Header gibt von Natur aus datenschutzsensible Informationen preis, wie z.B. die IP-Adresse des Clients.Daher muss beim Einsatz dieses Headers der Datenschutz des Benutzers berücksichtigt werden.
Wenn Sie wissen, dass alle Proxys in der Anforderungskette vertrauenswürdig sind (d.h. Sie kontrollieren sie) und korrekt konfiguriert sind, können die Teile des Headers, die von Ihren Proxys hinzugefügt werden, als vertrauenswürdig angesehen werden.Wenn ein Proxy bösartig oder fehlkonfiguriert ist, kann jeder Teil des Headers, der nicht von einem vertrauenswürdigen Proxy hinzugefügt wurde, gefälscht oder in einem unerwarteten Format oder mit unerwartetem Inhalt versehen sein.Wenn der Server direkt vom Internet aus erreichbar ist – selbst wenn er sich auch hinter einem vertrauenswürdigen Reverse-Proxy befindet – kannkein Teil derX-Forwarded-For-IP-Liste als vertrauenswürdig oder sicher für sicherheitsrelevante Zwecke angesehen werden.
Jede sicherheitsrelevante Nutzung vonX-Forwarded-For (wie Rate Limiting oder IP-basierte Zugangskontrolle)darf nur die IP-Adressen verwenden, die von einem vertrauenswürdigen Proxy hinzugefügt wurden.Die Verwendung nicht vertrauenswürdiger Werte kann zu einer Umgehung des Ratenbegrenzers, einer Umgehung der Zugangskontrolle, einem Erschöpfen des Speichers oder anderen negativen Sicherheits- oder Verfügbarkeitsfolgen führen.
Linkeste (nicht vertrauenswürdige) Werte dürfen nur in Fällen verwendet werden, in denen die Verwendung gefälschter Werte keine negativen Auswirkungen hat.
Parsing
Unsachgemäße Verarbeitung desX-Forwarded-For-Headers kann negative Sicherheitsfolgen haben, wie im vorherigen Abschnitt beschrieben.Aus diesem Grund sollten die folgenden Punkte bei der Verarbeitung der Header-Werte berücksichtigt werden.
Es können mehrereX-Forwarded-For-Header in einer Anfrage vorhanden sein.Die IP-Adressen in diesen Headers müssen als eine einzige Liste behandelt werden, beginnend mit der ersten IP-Adresse des ersten Headers und weiter zur letzten IP-Adresse des letzten Headers.Es gibt zwei Möglichkeiten, diese Einzel-Liste zu erstellen:
- Verbinden Sie die vollständigen
X-Forwarded-For-Headerwerte mit Kommas und teilen Sie sie dann durch Komma in eine Liste auf, oder - teilen Sie jeden
X-Forwarded-For-Header durch Komma in Listen auf und verbinden Sie dann die Listen.
Es ist unzureichend, nur einen der mehrerenX-Forwarded-For-Headers zu verwenden.
Einige Reverse-Proxys fügen automatisch mehrereX-Forwarded-For-Headers zu einem zusammen, aber es ist sicherer, nicht davon auszugehen, dass dies der Fall ist.
Auswahl einer IP-Adresse
Bei der Auswahl einer Adresse muss die vollständige Liste der IPs (aus allenX-Forwarded-For-Headers) verwendet werden.
Bei der Auswahl derX-Forwarded-For-IP-Adresse, die dem Client am nächsten ist (nicht vertrauenswürdig undnicht für sicherheitsrelevante Zwecke), sollte die erste IP von links, dieeine gültige Adresse undnicht privat/intern ist, ausgewählt werden.
Hinweis:Wir sagen "eine gültige Adresse" oben, weil gefälschte Werte möglicherweise keine tatsächlichen IP-Adressen sind.Zusätzlich sagen wir "nicht intern/privat", weil Clients möglicherweise Proxys in ihrem internen Netzwerk verwendet haben, die Adressen aus demprivaten IP-Bereich hinzugefügt haben.
Um die erstevertrauenswürdigeX-Forwarded-For-Client-IP-Adresse auszuwählen, ist zusätzliche Konfiguration erforderlich.Es gibt zwei gängige Methoden:
- Vertrauenswürdige Proxy-Anzahl
Die Anzahl der Reverse-Proxys zwischen dem Internet und dem Server wird konfiguriert.Die
X-Forwarded-For-IP-Liste wird von rechts nach links nach dieser Anzahl minus eins durchsucht.Zum Beispiel, wenn es nur einen Reverse-Proxy gibt, wird dieser Proxy die IP-Adresse des Clients hinzufügen, sodass die rechteste Adresse verwendet werden sollte.Wenn es drei Reverse-Proxys gibt, werden die letzten zwei IP-Adressen intern sein.- Vertrauenswürdige Proxy-Liste
Die IPs oder IP-Bereiche der vertrauenswürdigen Reverse-Proxys werden konfiguriert.Die
X-Forwarded-For-IP-Liste wird von rechts nach links durchsucht und alle Adressen, die sich in der vertrauenswürdigen Proxy-Liste befinden, werden übersprungen.Die erste nicht übereinstimmende Adresse ist die Zieladresse.
Die erste vertrauenswürdigeX-Forwarded-For-IP-Adresse kann zu einem nicht vertrauenswürdigen Zwischenproxy gehören und nicht zum eigentlichen Client, aber sie ist die einzige IP, die für Sicherheitszwecke geeignet ist, um einen Client zu identifizieren.
Beispiele
>Client- und Proxy-IPs
Aus dem folgendenX-Forwarded-For-Anforderungsheader können wir entnehmen, dass die Client-IP-Adresse203.0.113.195 ist und die Anfrage durch zwei Proxys gegangen ist.Der erste Proxy hat eine IPv6-Adresse von2001:db8:85a3:8d3:1319:8a2e:370:7348 und der letzte Proxy in der Anforderungskette hat eine IPv4-Adresse von198.51.100.178:
X-Forwarded-For: 203.0.113.195,2001:db8:85a3:8d3:1319:8a2e:370:7348,198.51.100.178Spezifikationen
Nicht Teil einer aktuellen Spezifikation. Die standardisierte Version dieses Headers istForwarded.
Siehe auch
X-Forwarded-Host,X-Forwarded-ProtoHeadersViaForwarded- What is X-Forwarded-For and when can you trust it? httptoolkit.com (2024)