Consulta de URI e remoção de fragmentos em logs IHttpClientFactory

No .NET 9, a implementação predefinida de IHttpClientFactory foi alterada para remover as cadeias de consulta ao registar informações de 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. Em cenários em que o registo de parâmetros de consulta seja necessário e considerado seguro, pode ignorar este comportamento predefinido.

Versão introduzida

.NET 9 Pré-visualização 7

Comportamento anterior

Anteriormente, a implementação predefinida do registo em IHttpClientFactory incluía parâmetros de consulta nas mensagens transmitidas a ILogger, o que podia expor inadvertidamente informações confidenciais.

Novo comportamento

As mensagens transmitidas a ILogger agora têm a componente de consulta substituída por um carácter * e as componentes de informação do utilizador e de fragmento removidas.

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 é 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 excluí-los dos logs por padrão ajuda a proteger essas informações. Para manter a implementação simples e eficiente, a informação do utilizador e as partes fragmentadas também são removidas.

Se a sua aplicação depende do registo de parâmetros de consulta e tiver a certeza de que é seguro fazê-lo, pode desativar globalmente a ocultação do URI definindo um comutador AppContext de uma de três formas. O switch ignora qualquer redação, por isso os URIs são registados as-is, incluindo a consulta, informações do utilizador e partes fragmentadas.

  • No arquivo do projeto.

    <ItemGroup>
      <RuntimeHostConfigurationOption Include="System.Net.Http.DisableUriRedaction" Value="true" />
    </ItemGroup>
    
  • No ficheiro 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

Esta mudança também ignora a redação de URI nos HttpClient eventos do EventSource. Para mais informações, consulte redação de URI nos eventos HttpClient EventSource.

APIs afetadas