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 HttpClient
SocketsHttpHandler
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.
Ação recomendada
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
comotrue
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.