IHttpClientFactory 記錄中的 URI 查詢和片段編輯

在 .NET 9 中,IHttpClientFactory 的預設實作已修改為在記錄 URI 資訊時清除查詢字串。 這項變更可藉由防止記錄查詢字串中包含的潛在敏感性資訊,同時將修訂的效能成本保持在最低,藉此增強隱私權。 在必須記錄查詢字串且此做法被視為安全的情況下,您可以覆寫此行為。

導入版本

.NET 9 預覽版 7

先前的行為

先前,IHttpClientFactory 記錄功能的預設實作會在傳遞至 ILogger 的訊息中包含查詢字串,這可能會在無意間洩露敏感資訊。

新的行為

傳達給 ILogger 的訊息現在會將查詢部分替換成字 * 元,並移除使用者資訊和片段部分。

破壞性變更的類型

此變更為行為變更。

變更原因

這項變更的主要原因,是藉由降低不小心記錄敏感性資訊的風險來增強隱私權。 查詢字串通常包含敏感數據,並預設從記錄中排除它們有助於保護此資訊。 為了保持實作簡單且高效,使用者資訊和片段部分也會被刪除。

如果你的應用程式依賴記錄查詢字串,且你有信心這樣做是安全的,你可以透過三種方式之一設定 AppContext 開關來全域禁用 URI 遮蔽。 此開關會略過任何遮蔽處理,因此 URI 會依原樣記錄,包括查詢、使用者資訊和片段部分。

  • 在專案檔中。

    <ItemGroup>
      <RuntimeHostConfigurationOption Include="System.Net.Http.DisableUriRedaction" Value="true" />
    </ItemGroup>
    
  • 在 runtimeconfig.json 檔案中。

    {
        "runtimeOptions": {
            "configProperties": {
                "System.Net.Http.DisableUriRedaction": true
            }
        }
    }
    
  • 透過環境變數。

    將 DOTNET_SYSTEM_NET_HTTP_DISABLEURIREDACTION 設定為 true 或 1。

否則,不需要採取任何動作,且預設行為將有助於增強應用程式的隱私權層面。

附註

此切換同時跳過 EventSource 事件中的 HttpClient URI 編輯。 欲了解更多資訊,請參閱 HttpClient EventSource 事件中的 URI 塗黑。

受影響的 API