在 .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 塗黑。