URI-fråga och fragmentredigering i HttpClient EventSource-händelser
I .NET 9 har standardbeteendet för EventSource händelser som genereras av HttpClient och SocketsHttpHandler (EventSource
namn: System.Net.Http
) ändrats för att rensa frågan och fragmentdelen av URI:n. 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. Om det behövs kan du åsidosätta det här beteendet.
Version introducerad
Förhandsversion 7 av .NET 9
Tidigare beteende
Tidigare har händelser som genererats av HttpClient
och SocketsHttpHandler
inkluderat frågesträngsinformation, vilket oavsiktligt kan exponera känslig information.
Nytt beteende
Med ändringen i dotnet/runtime#104741ersätts fråge- och fragmentdelen av ett *
-tecken i HttpClient
- och SocketsHttpHandler
-händelser som standardinställning. Den här ändringen påverkar specifika händelser och parametrar, till exempel pathAndQuery
i RequestStart
och redirectUri
i Redirect
.
Typ av icke-bakåtkompatibel ändring
Den här ändringen är en beteendeförändring.
Orsak till ändringen
Den främsta orsaken till den här ändringen var 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 redigera 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 fragmentdelen.
Rekommenderad åtgärd
Om du behöver information om frågesträngar när du använder HttpClient
eller SocketsHttpHandler
händelser och du är säker på att det är säkert att göra det, kan du aktivera loggning av frågesträngar globalt genom att ange en AppContext-växel på något av tre sätt:
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
tilltrue
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 inaktiverar även redigering av frågesträngar i standardloggarna IHttpClientFactory
. Mer information finns i URI-frågeredigering i IHttpClientFactory-loggar.