Partilhar via


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

No .NET 9, a implementação padrão do foi modificada para limpar cadeias de caracteres de consulta ao registrar informações de IHttpClientFactory 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. Para cenários em que o registro em log de cadeias de caracteres de consulta é necessário e considerado seguro, você pode substituir esse comportamento.

Versão introduzida

.NET 9 Visualização 7

Comportamento anterior

Anteriormente, a implementação padrão do registro em log incluía cadeias de caracteres de IHttpClientFactory consulta nas mensagens passadas para ILogger, que podiam expor inadvertidamente informações confidenciais.

Novo comportamento

As mensagens passadas para ILogger agora têm a parte da consulta e do fragmento substituída por um caractere *.

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 parte do fragmento também é purgada.

Se seu aplicativo depende de cadeias de caracteres de consulta de log e você tem certeza de que é seguro fazer isso, você pode 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 em HttpClient eventos EventSource. Para obter mais informações, consulte Redação de consulta URI em eventos HttpClient EventSource.

APIs afetadas