Partilhar via


Consulta URI e redação de fragmentos em eventos HttpClient EventSource

No .NET 9, o comportamento padrão dos eventos de EventSource emitidos por HttpClient e SocketsHttpHandler (EventSource name: System.Net.Http) foi modificado para remover a parte da consulta e do fragmento do URI. Essa alteração aumenta a privacidade, impedindo o registro 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 Visualização 7

Comportamento anterior

Anteriormente, os eventos emitidos e HttpClientSocketsHttpHandler incluídos informações de cadeia de caracteres de consulta, que podiam expor inadvertidamente informações confidenciais.

Novo comportamento

Com a alteração no dotnet/runtime#104741, as partes de consulta e de fragmento são substituídas por um caractere *, por padrão, nos eventos HttpClient e SocketsHttpHandler. Essa alteração afeta eventos e parâmetros específicos, como pathAndQuery no RequestStart e redirectUri no Redirect.

Tipo de mudança de rutura

Esta mudança é uma mudança comportamental.

Razão para a alteração

A principal razão para esta alteração foi melhorar a privacidade, reduzindo o risco de informações confidenciais serem registadas inadvertidamente. As cadeias de caracteres de consulta geralmente contêm dados confidenciais, e editá-las 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 é removida.

Se você precisar de informações de cadeia de caracteres de consulta ao consumir HttpClient ou SocketsHttpHandler eventos e estiver confiante 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 do projeto.

    <ItemGroup>
      <RuntimeHostConfigurationOption Include="System.Net.Http.DisableUriRedaction" Value="true" />
    </ItemGroup>
    
  • No arquivo runtimeconfig.json.

    {
        "runtimeOptions": {
            "configProperties": {
                "System.Net.Http.DisableUriRedaction": true
            }
        }
    }
    
  • Através 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 melhorar os aspetos de privacidade do seu aplicativo.

Nota

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 URI em logs IHttpClientFactory.

APIs afetadas