Consulta URI e redação de fragmentos em eventos HttpClient EventSource
No .NET 9, o comportamento padrão dos eventos emitidos por EventSource events emitted by HttpClient e SocketsHttpHandler (EventSource
name: System.Net.Http
) foi modificado para limpar a consulta e fragmentar a parte do URI. Essa alteração aprimora a privacidade impedindo o registro em log de informações potencialmente confidenciais contidas em cadeias de caracteres de consulta, mantendo os custos de desempenho da redação mínimos. Se necessário, você pode substituir esse comportamento.
Versão introduzida
.NET 9 Preview 7
Comportamento anterior
Anteriormente, os eventos emitidos e HttpClient
SocketsHttpHandler
incluíam informações de cadeia de caracteres de consulta, o que poderia expor inadvertidamente informações confidenciais.
Novo comportamento
Com a alteração em dotnet/runtime#104741, a parte de consulta e fragmento são substituídas por um caractere *
em eventos HttpClient
e SocketsHttpHandler
, por padrão. Essa alteração afeta eventos e parâmetros específicos, como pathAndQuery
em RequestStart
e redirectUri
em Redirect
.
Tipo de alteração interruptiva
Esta é uma alteração comportamental.
Motivo da alteração
O principal motivo para essa mudança foi aumentar a privacidade, reduzindo o risco de informações confidenciais serem registradas inadvertidamente. As cadeias de caracteres de consulta geralmente contêm dados confidenciais e redigi-los de logs por padrão ajuda a proteger essas informações. Para manter a implementação simples e eficiente, a parte do fragmento também é depurada.
Ação recomendada
Se você precisar de informações de cadeia de caracteres de consulta ao consumir HttpClient
eventos ou SocketsHttpHandler
e tiver certeza de que é seguro fazer isso, poderá habilitar o log de cadeia de caracteres de consulta globalmente definindo uma opção AppContext de uma das três maneiras:
No arquivo de projeto.
<ItemGroup> <RuntimeHostConfigurationOption Include="System.Net.Http.DisableUriRedaction" Value="true" /> </ItemGroup>
No arquivo runtimeconfig.json.
{ "runtimeOptions": { "configProperties": { "System.Net.Http.DisableUriRedaction": true } } }
Por meio de uma variável de ambiente.
Defina
DOTNET_SYSTEM_NET_HTTP_DISABLEURIREDACTION
comotrue
ou 1.
Caso contrário, nenhuma ação será necessária e o comportamento padrão ajudará a aprimorar os aspectos de privacidade do seu aplicativo.
Observação
Essa opção também desabilita a redação da cadeia de caracteres de consulta nos logs padrão IHttpClientFactory
. Para obter mais informações, consulte Redação de consulta de URI em logs IHttpClientFactory.