Compartilhar via


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 HttpClientSocketsHttpHandler 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.

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 como true 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.

APIs afetadas