Поделиться через


Редактирование запроса URI и фрагмента в журналах IHttpClientFactory

В .NET 9 реализация IHttpClientFactory по умолчанию была изменена для обработки строк запроса при ведении журнала URI. Эта перемена повышает конфиденциальность, предотвращая регистрацию потенциально конфиденциальной информации в строках запроса, сведя затраты на производительность к минимуму. В сценариях, когда строки запроса ведения журнала необходимы и считаются безопасными, можно переопределить это поведение.

Представленные версии

.NET 9( предварительная версия 7)

Прежнее поведение

Ранее реализация IHttpClientFactory ведения журнала по умолчанию включала строки запроса в передаваемые сообщения ILogger, которые могут непреднамеренно предоставлять конфиденциальную информацию.

Новое поведение

Сообщения, передаваемые в ILogger, теперь имеют часть запроса и фрагмента замененную символом *.

Тип критического изменения

Это изменение поведения.

Причина изменения

Основная причина этого изменения заключается в повышении конфиденциальности путем снижения риска ведения журнала конфиденциальной информации. Строки запросов часто содержат конфиденциальные данные и исключают их из журналов по умолчанию, что помогает защитить эти сведения. Чтобы обеспечить простую и эффективную реализацию, часть фрагмента также очищается.

Если приложение использует строки запросов для ведения журнала, и вы уверены, что это безопасно, вы можете включить ведение журнала строк запроса глобально, задав переключатель AppContext одним из трех способов:

  • В файле проекта.

    <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.

В противном случае никаких действий не требуется, а поведение по умолчанию поможет улучшить аспекты конфиденциальности приложения.

Примечание.

Этот параметр также отключает изменение строки запроса в HttpClient событиях EventSource. Дополнительные сведения см. в разделе о редакте запроса URI в событиях HttpClient EventSource.

Затронутые API