Masquage des requêtes URI et des fragments dans les événements EventSource de HttpClient
Dans .NET 9, le comportement par défaut des événements EventSource émis par HttpClient et SocketsHttpHandler (nomEventSource
: System.Net.Http
) a été modifié pour nettoyer la requête et la partie fragment de l’URI. Cette modification améliore la confidentialité en empêchant la journalisation des informations potentiellement sensibles contenues dans les chaînes de requête tout en réduisant au minimum les coûts de performance liés à la rédaction. Si nécessaire, vous pouvez remplacer ce comportement.
Version introduite
.NET 9 Préversion 7
Comportement précédent
Auparavant, les événements émis par et HttpClient
inclus des informations de SocketsHttpHandler
chaîne de requête, susceptibles d’exposer par inadvertance des informations sensibles.
Nouveau comportement
Avec la modification de dotnet/runtime#104741, la partie requête et fragment est remplacée par un caractère *
dans les événements HttpClient
et SocketsHttpHandler
, par défaut. Cette modification affecte des événements et des paramètres spécifiques, tels que pathAndQuery
dans RequestStart
et redirectUri
dans Redirect
.
Type de changement cassant
Ce changement est un changement de comportement.
Raison du changement
La principale raison de ce changement était d’améliorer la confidentialité en réduisant le risque de journalisation par inadvertance des informations sensibles. Les chaînes de requête contiennent souvent des données sensibles et les réactent à partir de journaux par défaut vous aident à protéger ces informations. Pour que l’implémentation soit simple et efficace, la partie fragment est également nettoyée.
Action recommandée
Si vous avez besoin d’informations de chaîne de requête lors de la consommation HttpClient
ou SocketsHttpHandler
des événements et que vous êtes certain qu’il est sûr de le faire, vous pouvez activer la journalisation des chaînes de requête globalement en définissant un commutateur AppContext de l’une des trois manières suivantes :
Dans le fichier projet.
<ItemGroup> <RuntimeHostConfigurationOption Include="System.Net.Http.DisableUriRedaction" Value="true" /> </ItemGroup>
Dans le fichier runtimeconfig.json.
{ "runtimeOptions": { "configProperties": { "System.Net.Http.DisableUriRedaction": true } } }
Via une variable d’environnement.
Définissez
DOTNET_SYSTEM_NET_HTTP_DISABLEURIREDACTION
surtrue
ou 1.
Sinon, aucune action n’est requise et le comportement par défaut permet d’améliorer les aspects de confidentialité de votre application.
Remarque
Ce commutateur désactive également la réaction de chaîne de requête dans les journaux par défaut IHttpClientFactory
. Pour plus d’informations, consultez la rédaction des requêtes d’URI dans les journaux IHttpClientFactory.