Compartir vía


Redacción de consultas y fragmentos URI en los eventos de HttpClient EventSource.

En .NET 9, el comportamiento predeterminado de los eventos EventSource emitidos por HttpClient y SocketsHttpHandler (EventSource nombre: System.Net.Http) ha sido modificado para eliminar la parte de consulta y fragmento del URI. Este cambio mejora la privacidad evitando el registro de información potencialmente confidencial contenida en las cadenas de consulta, a la vez que mantiene los costos de rendimiento de la redacción mínima. Si es necesario, puede invalidar este comportamiento.

Versión introducida

.NET 9 Versión preliminar 7

Comportamiento anterior

Anteriormente, los eventos emitidos por HttpClient e SocketsHttpHandler incluyeban información de cadena de consulta, que podía exponer accidentalmente información confidencial.

Comportamiento nuevo

Con el cambio en dotnet/runtime#104741, la parte de consulta y fragmento se reemplaza por un carácter * en los eventos HttpClient y SocketsHttpHandler, por defecto. Este cambio afecta a eventos y parámetros específicos, como pathAndQuery en RequestStart y redirectUri en Redirect.

Tipo de cambio importante

Este es un cambio de funcionamiento.

Motivo del cambio

La razón principal de este cambio fue mejorar la privacidad al reducir el riesgo de que la información confidencial se registre involuntariamente. Las cadenas de consulta suelen contener datos confidenciales y, de forma predeterminada, la censura de los registros ayuda a proteger esta información. Para que la implementación sea sencilla y eficaz, la parte del fragmento también se limpia.

Si necesita información de cadena de consulta al consumir HttpClient eventos o SocketsHttpHandler y está seguro de que es seguro hacerlo, puede habilitar el registro de cadenas de consulta globalmente estableciendo un modificador AppContext de una de estas tres maneras:

  • En el archivo del proyecto.

    <ItemGroup>
      <RuntimeHostConfigurationOption Include="System.Net.Http.DisableUriRedaction" Value="true" />
    </ItemGroup>
    
  • En el archivo runtimeconfig.json.

    {
        "runtimeOptions": {
            "configProperties": {
                "System.Net.Http.DisableUriRedaction": true
            }
        }
    }
    
  • A través de una variable de entorno.

    Establezca DOTNET_SYSTEM_NET_HTTP_DISABLEURIREDACTION en true o 1.

De lo contrario, no se requiere ninguna acción y el comportamiento predeterminado ayudará a mejorar los aspectos de privacidad de la aplicación.

Nota:

Este modificador también deshabilita la redacción de cadenas de consulta en los registros predeterminados IHttpClientFactory . Para obtener más información, vea URI query redaction in IHttpClientFactory logs (Reacción de consultas de URI en registros de IHttpClientFactory).

API afectadas