Freigeben über


URI-Abfrage- und Fragmentbearbeitung in IHttpClientFactory-Protokollen

In .NET 9 wurde die Standardimplementierung IHttpClientFactory geändert, um Abfragezeichenfolgen beim Protokollieren von URI-Informationen zu bereinigen. Diese Änderung verbessert den Datenschutz, indem verhindert wird, dass potenziell vertrauliche Informationen, die in Abfragezeichenfolgen enthalten sind, protokolliert werden, während die Leistungskosten der Redaction minimal bleiben. Für Szenarien, in denen die Protokollierung von Abfragezeichenfolgen erforderlich und als sicher eingestuft wird, können Sie dieses Verhalten außer Kraft setzen.

Eingeführt in Version

.NET 9 Preview 7

Vorheriges Verhalten

Zuvor enthielt die Standardimplementierung der IHttpClientFactory Protokollierung Abfragezeichenfolgen in den an die Nachrichten übergebenen ILoggerNachrichten, die versehentlich vertrauliche Informationen verfügbar machen könnten.

Neues Verhalten

Bei den an ILogger übergebenen Nachrichten wird der Abfrage- und Fragmentteil nun durch ein *-Zeichen ersetzt.

Typ des Breaking Changes

Diese Änderung ist eine Verhaltensänderung.

Grund für die Änderung

Der Hauptgrund für diese Änderung besteht darin, den Datenschutz zu verbessern, indem das Risiko reduziert wird, dass vertrauliche Informationen versehentlich protokolliert werden. Abfragezeichenfolgen enthalten häufig vertrauliche Daten und ausschließen sie standardmäßig aus Protokollen, um diese Informationen zu schützen. Damit die Implementierung einfach und effizient bleibt, wird der Fragmentteil außerdem bereinigt.

Wenn Ihre Anwendung auf die Protokollierung von Abfragezeichenfolgen angewiesen ist und Sie sicher sind, dass dies sicher ist, können Sie die Abfragezeichenfolgenprotokollierung global aktivieren, indem Sie einen AppContext-Switch auf eine von drei Arten festlegen:

  • In der Projektdatei.

    <ItemGroup>
      <RuntimeHostConfigurationOption Include="System.Net.Http.DisableUriRedaction" Value="true" />
    </ItemGroup>
    
  • In der runtimeconfig.json-Datei.

    {
        "runtimeOptions": {
            "configProperties": {
                "System.Net.Http.DisableUriRedaction": true
            }
        }
    }
    
  • Über eine Umgebungsvariable.

    DOTNET_SYSTEM_NET_HTTP_DISABLEURIREDACTION wird auf true oder 1 festgelegt.

Andernfalls ist keine Aktion erforderlich, und das Standardverhalten trägt dazu bei, die Datenschutzaspekte Ihrer Anwendung zu verbessern.

Hinweis

Mit diesem Switch werden auch Abfragezeichenfolgen redaction in HttpClient EventSource-Ereignissen deaktiviert. Weitere Informationen finden Sie unter URI-Abfrage redaction in HttpClient EventSource-Ereignissen.

Betroffene APIs