Condividi tramite


Censura delle query e dei frammenti URI negli eventi EventSource di HttpClient

In .NET 9 il comportamento predefinito degli eventi EventSource generati da HttpClient e SocketsHttpHandler ( nomeEventSource: System.Net.Http) è stato modificato per pulire la query e la parte frammenta dell'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. Se necessario, è possibile eseguire l'override di questo comportamento.

Versione introdotta

.NET 9 Anteprima 7

Comportamento precedente

In precedenza, gli eventi generati da HttpClient e SocketsHttpHandler includevano informazioni sulla stringa di query, che potrebbero esporre inavvertitamente informazioni riservate.

Nuovo comportamento

Con la modifica in dotnet/runtime#104741, per impostazione predefinita, la parte di query e di frammento viene sostituita da un carattere * negli eventi HttpClient e SocketsHttpHandler. Questa modifica influisce su eventi e parametri specifici, ad esempio pathAndQuery in RequestStart e redirectUri in Redirect.

Tipo di modifica che causa un'interruzione

Questa è una modifica funzionale.

Motivo della modifica

Il motivo principale di questa modifica era migliorare la privacy riducendo il rischio di registrazione accidentale delle informazioni riservate. Per impostazione predefinita, le stringhe di query contengono dati sensibili e le redacting dai log consentono di proteggere queste informazioni. Per mantenere l'implementazione semplice ed efficiente, anche il frammento viene ripulito.

Se sono necessarie informazioni sulla stringa di query quando si usano HttpClient o SocketsHttpHandler eventi e si è certi che sia sicuro farlo, è possibile abilitare la registrazione delle stringhe di query a livello globale impostando un'opzione AppContext in uno dei tre modi seguenti:

  • 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 disabilita anche la ridistribuzione delle stringhe di query nei log predefiniti IHttpClientFactory . Per altre informazioni, vedere Rollforward di query URI nei log IHttpClientFactory.

API interessate