Remoção de consultas e fragmentos de URI nos logs de IHttpClientFactory

No .NET 9, a implementação padrão de IHttpClientFactory foi modificada para remover os parâmetros de consulta ao registrar em log informações de 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. 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 Versão Prévia 7

Comportamento anterior

Anteriormente, a implementação padrão de logging IHttpClientFactory incluía strings de consulta nas mensagens passadas para ILogger, o que poderia expor inadvertidamente informações sensíveis.

Novo comportamento

As mensagens passadas para ILogger agora têm a parte da consulta substituída pelo caractere *, e as informações do usuário e a parte de fragmento removidas.

Tipo de alteração interruptiva

Esta é uma alteração comportamental.

Motivo da alteração

O principal motivo para essa mudança é 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 excluí-los dos logs por padrão ajuda a proteger essas informações. Para manter a implementação simples e eficiente, as informações do usuário e as partes de fragmento também são removidas.

Se o seu aplicativo depende do registro em log de cadeias de consulta e você tem certeza de que isso é seguro, pode desabilitar globalmente o mascaramento de URI configurando uma chave AppContext de uma destas três formas. A opção ignora qualquer redação, portanto, as URIs são registradas as-is, incluindo a consulta, as informações do usuário e as partes do fragmento.

  • 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 ignora a edição de URI em eventos EventSource HttpClient. Para obter mais informações, consulte a redação de URI em eventos HttpClient EventSource.

APIs afetadas