Udostępnij przez


Kwerenda identyfikatora URI i redaction fragmentu w zdarzeniach HttpClient EventSource

W programie .NET 9 domyślne działanie zdarzeń EventSource emitowanych przez HttpClient i SocketsHttpHandler (EventSource nazwa: System.Net.Http) zostało zmodyfikowane w celu usuwania zapytania i fragmentu identyfikatora 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 razie potrzeby można zastąpić to zachowanie.

Wprowadzona wersja

.NET 9 (wersja zapoznawcza 7)

Poprzednie zachowanie

Wcześniej zdarzenia emitowane przez HttpClient i SocketsHttpHandler dołączone informacje o ciągu zapytania, które mogłyby przypadkowo uwidocznić poufne informacje.

Nowe zachowanie

Po zmianie w dotnet/runtime#104741, część zapytania i fragmentu są domyślnie zastępowane znakiem * w zdarzeniach HttpClient i SocketsHttpHandler. Ta zmiana dotyczy określonych zdarzeń i parametrów, takich jak pathAndQuery w RequestStart i redirectUri w Redirect.

Typ zmiany powodującej niezgodność

Ta zmiana jest zmianą behawioralną.

Przyczyna wprowadzenia zmiany

Główną przyczyną tej zmiany było zwiększenie prywatności poprzez zmniejszenie ryzyka niezamierzonego rejestrowania poufnych informacji. Ciągi zapytań często zawierają poufne dane i domyślnie pomagają chronić te informacje. Aby zapewnić prostą i wydajną implementację, część fragmentu jest również szorowana.

Jeśli potrzebujesz informacji o ciągu zapytania podczas używania HttpClient lub SocketsHttpHandler zdarzeń i masz pewność, że jest to bezpieczne, możesz włączyć rejestrowanie ciągów zapytania globalnie, ustawiając przełącznik AppContext na jeden z trzech sposobów:

  • 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 wartość 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 wyłącza również funkcję redaction ciągu zapytania w dziennikach domyślnych IHttpClientFactory . Aby uzyskać więcej informacji, zobacz Redaction zapytania URI w dziennikach IHttpClientFactory.

Dotyczy interfejsów API