Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A partir do ASP.NET Core 8.0.17 e 9.0.6, o Middleware de cabeçalhos encaminhados ignora todos os X-Forwarded-* cabeçalhos de proxies que não são configurados explicitamente como confiáveis. Essa alteração foi feita para proteção de segurança, pois as listas de proxy e IP não estavam sendo aplicadas em todos os casos.
Versão introduzida
ASP.NET Core 8.0.17 ASP.NET Core 9.0.6
Comportamento anterior
Anteriormente, o middleware, quando não configurado para usar X-Forwarded-For, processava os X-Forwarded-Prefix, X-Forwarded-Proto e X-Forwarded-Host cabeçalhos de qualquer origem. Esse comportamento potencialmente permitiu que proxies/clientes mal-intencionados ou mal configurados falsificassem esses cabeçalhos e afetassem o entendimento de um aplicativo sobre as informações do cliente.
Novo comportamento
A partir das versões de manutenção do .NET 8 e do .NET 9, somente os cabeçalhos enviados por proxies confiáveis conhecidos (conforme configurado via ForwardedHeadersOptions.KnownProxies e ForwardedHeadersOptions.KnownNetworks) são processados. Cabeçalhos de fontes desconhecidas são ignorados.
Observação
Se a implantação depender de cabeçalhos encaminhados de proxies que não estão configurados na lista de proxies confiáveis do seu aplicativo, esses cabeçalhos não serão mais aceitos.
Essa alteração pode causar comportamentos como redirecionamentos infinitos se você estiver usando o middleware de redirecionamento HTTPS e usando a terminação TLS em seu proxy. Isso também pode fazer com que a autenticação falhe se você estiver usando o encerramento do TLS e esperando uma solicitação HTTPS.
Tipo de mudança disruptiva
Essa alteração é uma mudança comportamental.
Motivo da alteração
A alteração foi feita para proteção de segurança, pois as listas de proxy e IP não estavam sendo aplicadas em todos os casos.
Ação recomendada
Examine a topologia de implantação. Certifique-se de que todos os servidores proxy legítimos à frente do seu aplicativo sejam corretamente adicionados a KnownProxies ou KnownNetworks na configuração de ForwardedHeadersOptions.
app.UseForwardedHeaders(new ForwardedHeadersOptions
{
KnownProxies = { IPAddress.Parse("YOUR_PROXY_IP") }
});
Ou, para uma rede:
app.UseForwardedHeaders(new ForwardedHeadersOptions
{
KnownNetworks = { new IPNetwork(IPAddress.Parse("YOUR_NETWORK_IP"), PREFIX_LENGTH) }
});
Se você deseja habilitar o comportamento anterior, o que não é recomendado devido a riscos de segurança, você pode fazer isso limpando as listas de KnownNetworks e KnownProxies em ForwardedHeadersOptions para permitir que qualquer proxy ou rede encaminhe esses cabeçalhos.
Você também pode definir a ASPNETCORE_FORWARDEDHEADERS_ENABLED variável de ambiente como true, o que limpa as listas e habilita ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto.
Para aplicativos direcionados ao .NET 9 ou anteriores, você pode definir o switch Microsoft.AspNetCore.HttpOverrides.IgnoreUnknownProxiesWithoutForAppContext para "true" ou 1 para retornar ao comportamento anterior. Como alternativa, defina a variável de MICROSOFT_ASPNETCORE_HTTPOVERRIDES_IGNORE_UNKNOWN_PROXIES_WITHOUT_FOR ambiente.
Observação
Em ambientes de nuvem, os IPs proxy podem mudar ao longo do tempo de vida do aplicativo e ASPNETCORE_FORWARDEDHEADERS_ENABLED , às vezes, são usados para fazer os cabeçalhos encaminhados funcionarem.