Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Ab ASP.NET Core 8.0.17 und 9.0.6 ignoriert die Forwarded Headers Middleware alle X-Forwarded-* Header von Proxys, die nicht explizit als vertrauenswürdig konfiguriert sind. Diese Änderung wurde für die Sicherheitshärtung vorgenommen, da die Proxy- und IP-Listen nicht in allen Fällen angewendet wurden.
Eingeführt in Version
ASP.NET Core 8.0.17 ASP.NET Core 9.0.6
Vorheriges Verhalten
Zuvor verarbeitete die Middleware, wenn sie nicht zur Verwendung von X-Forwarded-For konfiguriert wurde, Header X-Forwarded-Prefix, X-Forwarded-Proto und X-Forwarded-Host aus einer beliebigen Quelle. Dieses Verhalten erlaubte potenziell böswillige oder falsch konfigurierte Proxys/Clients, diese Header zu spoofen und das Verständnis von Clientinformationen einer Anwendung zu beeinflussen.
Neues Verhalten
Ab .NET 8- und .NET 9-Wartungsversionen werden nur Header verarbeitet, die von bekannten, vertrauenswürdigen Proxys (wie konfiguriert über ForwardedHeadersOptions.KnownProxies und ForwardedHeadersOptions.KnownNetworks) gesendet werden. Kopfzeilen aus unbekannten Quellen werden ignoriert.
Hinweis
Wenn Ihre Bereitstellung auf weitergeleitete Header von Proxys basiert, die nicht in der vertrauenswürdigen Proxyliste Ihrer Anwendung konfiguriert wurden, werden diese Header nicht mehr berücksichtigt.
Diese Änderung kann das Verhalten wie unendliche Umleitungen verursachen, wenn Sie die HTTPS-Umleitungs-Middleware verwenden und TLS-Beendigung in Ihrem Proxy verwenden. Es kann auch dazu führen, dass die Authentifizierung fehlschlägt, wenn Sie TLS-Beendigung verwenden und eine HTTPS-Anforderung erwarten.
Art der einschneidenden Änderung
Diese Änderung ist eine Verhaltensänderung.
Grund für Änderung
Die Änderung wurde für die Sicherheitshärtung vorgenommen, da die Proxy- und IP-Listen nicht in allen Fällen angewendet wurden.
Empfohlene Aktion
Überprüfen Sie die Bereitstellungstopologie. Stellen Sie sicher, dass alle legitimen Proxyserver vor Ihrer App ordnungsgemäß zu KnownProxies oder KnownNetworks in Ihrer ForwardedHeadersOptions Konfiguration hinzugefügt werden.
app.UseForwardedHeaders(new ForwardedHeadersOptions
{
KnownProxies = { IPAddress.Parse("YOUR_PROXY_IP") }
});
Oder für ein Netzwerk:
app.UseForwardedHeaders(new ForwardedHeadersOptions
{
KnownNetworks = { new IPNetwork(IPAddress.Parse("YOUR_NETWORK_IP"), PREFIX_LENGTH) }
});
Wenn Sie das vorherige Verhalten aktivieren möchten, das aufgrund von Sicherheitsrisiken nicht empfohlen wird, können Sie dies tun, indem Sie die Listen KnownNetworks und KnownProxies in ForwardedHeadersOptions löschen, um jedem Proxy oder Netzwerk zu ermöglichen, diese Header weiterzuleiten.
Sie können die ASPNETCORE_FORWARDEDHEADERS_ENABLED Umgebungsvariable auch auf truefestlegen, wodurch die Listen gelöscht und aktiviert werden ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto.
Für Anwendungen, die auf .NET 9 oder früher abzielen, können Sie den Microsoft.AspNetCore.HttpOverrides.IgnoreUnknownProxiesWithoutForAppContext-Switch auf "true" oder 1 auf das vorherige Verhalten zurücksetzen. Alternativ können Sie die Umgebungsvariable MICROSOFT_ASPNETCORE_HTTPOVERRIDES_IGNORE_UNKNOWN_PROXIES_WITHOUT_FOR festlegen.
Hinweis
In Cloud-Umgebungen können sich die Proxy-IPs während der Lebensdauer der App ändern, und ASPNETCORE_FORWARDEDHEADERS_ENABLED wird manchmal verwendet, damit weitergeleitete Header funktionieren.