Kwerenda identyfikatora URI i redaction fragmentu w dziennikach IHttpClientFactory

Na platformie .NET 9 domyślna implementacja IHttpClientFactory została zmodyfikowana w celu czyszczenia ciągów zapytań podczas rejestrowania informacji o identyfikatorze URI. Ta zmiana zwiększa prywatność, uniemożliwiając rejestrowanie potencjalnie poufnych informacji zawartych w ciągach zapytań przy jednoczesnym zachowaniu minimalnych kosztów wydajności operacji redaction. W przypadku scenariuszy, w których rejestrowanie ciągów zapytań jest niezbędne i uznane za bezpieczne, można zastąpić to zachowanie.

Wprowadzona wersja

.NET 9 (wersja zapoznawcza 7)

Poprzednie zachowanie

Wcześniej domyślna implementacja rejestrowania IHttpClientFactory zawierała ciągi zapytań w komunikatach przekazanych do ILogger, co mogło przypadkowo uwidocznić poufne informacje.

Nowe zachowanie

Komunikaty przekazywane do ILogger mają teraz część zapytania zastąpioną znakiem *, a części informacji o użytkowniku i fragment zostały usunięte.

Typ zmiany powodującej niezgodność

Ta zmiana jest zmianą behawioralną.

Przyczyna wprowadzenia zmiany

Główną przyczyną tej zmiany jest zwiększenie prywatności poprzez zmniejszenie ryzyka niezamierzonego rejestrowania poufnych informacji. Ciągi zapytań często zawierają poufne dane i domyślnie wykluczają je z dzienników, co pomaga chronić te informacje. Aby zapewnić prostą i wydajną implementację, informacje o użytkowniku i części fragmentów są również czyszczone.

Jeśli działanie aplikacji zależy od rejestrowania parametrów zapytania i masz pewność, że jest to bezpieczne, możesz globalnie wyłączyć redagowanie identyfikatora URI, ustawiając przełącznik AppContext w jeden z trzech sposobów. Przełącznik pomija wszelkie redagowanie, więc identyfikatory URI są rejestrowane w niezmienionej postaci, łącznie z zapytaniem, informacjami o użytkowniku i fragmentem.

  • W pliku projektu.

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

    {
        "runtimeOptions": {
            "configProperties": {
                "System.Net.Http.DisableUriRedaction": true
            }
        }
    }
    
  • Za pomocą zmiennej środowiskowej.

    Ustaw DOTNET_SYSTEM_NET_HTTP_DISABLEURIREDACTION na true lub 1.

W przeciwnym razie nie jest wymagana żadna akcja, a domyślne zachowanie pomoże zwiększyć aspekty prywatności aplikacji.

Uwaga

Ten przełącznik pomija również maskowanie identyfikatorów URI w zdarzeniach HttpClient EventSource. Aby uzyskać więcej informacji, zobacz Ukrywanie identyfikatorów URI w zdarzeniach EventSource składnika HttpClient.

Interfejsy API, których to dotyczy