URI-fråga och fragmentredigering i IHttpClientFactory-loggar

I .NET 9 har standardimplementeringen av IHttpClientFactory ändrats för att ta bort frågesträngar när URI-information loggas. Den här ändringen förbättrar sekretessen genom att förhindra loggning av potentiellt känslig information i frågesträngar samtidigt som prestandakostnaderna för redigeringen hålls minimala. För scenarier där loggning av frågesträngar är nödvändigt och anses vara säkra kan du åsidosätta det här beteendet.

Version introducerad

Förhandsversion 7 av .NET 9

Tidigare beteende

Tidigare inkluderade standardimplementeringen av IHttpClientFactory loggning frågesträngar i de meddelanden som skickades till ILogger, vilket oavsiktligt kunde exponera känslig information.

Nytt beteende

Meddelandena som skickas till ILogger nu har frågedelen ersatt av ett * tecken och användarinformationen och fragmentdelarna har tagits bort.

Typ av brytande ändring

Den här ändringen är en beteendeförändring.

Orsak till ändringen

Den främsta orsaken till den här ändringen är att förbättra sekretessen genom att minska risken för att känslig information loggas oavsiktligt. Frågesträngar innehåller ofta känsliga data och att undanta dem från loggar som standard hjälper till att skydda den här informationen. För att hålla implementeringen enkel och effektiv rensas även användarinformationen och fragmentdelarna.

Om ditt program förlitar sig på loggning av frågesträngar och du är säker på att det är säkert att göra det kan du inaktivera URI-redigering globalt genom att ange en AppContext-växel på något av tre sätt. Växeln hoppar över alla redigeringar, så URI:er loggas as-is, inklusive frågan, användarinformation och fragmentdelar.

  • I projektfilen.

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

    {
        "runtimeOptions": {
            "configProperties": {
                "System.Net.Http.DisableUriRedaction": true
            }
        }
    }
    
  • Via en miljövariabel.

    Ange DOTNET_SYSTEM_NET_HTTP_DISABLEURIREDACTION till true eller 1.

Annars krävs ingen åtgärd, och standardbeteendet hjälper till att förbättra sekretessaspekterna i ditt program.

Kommentar

Den här växeln hoppar också över URI-redigering i HttpClient EventSource-händelser. Mer information finns i URI-redigering i HttpClient EventSource-händelser.

Berörda API:er