Redazione di query URI e frammenti nei log di IHttpClientFactory

In .NET 9, l'implementazione predefinita di IHttpClientFactory è stata modificata per rimuovere le stringhe di query durante la registrazione nel log delle informazioni sull'URI. Questa modifica migliora la privacy impedendo la registrazione di informazioni potenzialmente riservate contenute nelle stringhe di query mantenendo al tempo stesso i costi di prestazioni della rimozione minima. Per gli scenari in cui la registrazione delle stringhe di query è necessaria e considerata sicura, è possibile eseguire l'override di questo comportamento.

Versione introdotta

.NET 9 Preview 7

Comportamento precedente

In precedenza, l'implementazione predefinita della IHttpClientFactory registrazione includeva stringhe di query nei messaggi passati a ILogger, che potrebbero esporre inavvertitamente informazioni riservate.

Nuovo comportamento

I messaggi passati a ILogger ora hanno la componente della query sostituita con il carattere * e le componenti relative alle informazioni sull'utente e al frammento rimosse.

Tipo di modifica che causa un'interruzione

Questa è una modifica funzionale.

Motivo della modifica

Il motivo principale di questa modifica è migliorare la privacy riducendo il rischio di registrazione accidentale delle informazioni riservate. Le stringhe di query contengono spesso dati sensibili ed esclusi dai log per impostazione predefinita consentono di proteggere queste informazioni. Per mantenere l'implementazione semplice ed efficiente, vengono anche lavate le informazioni utente e le parti di frammento.

Se l'applicazione si basa sulla registrazione di stringhe di query e si è certi che sia possibile farlo in modo sicuro, è possibile disabilitare la ridistribuzione dell'URI a livello globale impostando un'opzione AppContext in uno dei tre modi. L'opzione salta qualsiasi mascheramento, quindi gli URI vengono registrati così come sono, compresi la query, le informazioni utente e il frammento.

  • Nel file di progetto.

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

    {
        "runtimeOptions": {
            "configProperties": {
                "System.Net.Http.DisableUriRedaction": true
            }
        }
    }
    
  • Tramite una variabile di ambiente.

    Impostare DOTNET_SYSTEM_NET_HTTP_DISABLEURIREDACTION su true o 1.

In caso contrario, non è necessaria alcuna azione e il comportamento predefinito contribuirà a migliorare gli aspetti della privacy dell'applicazione.

Nota

Questa opzione salta anche l'oscuramento dell'URI negli eventi HttpClient EventSource. Per altre informazioni, vedere Mascheramento degli URI negli eventi EventSource di HttpClient.

API interessate