다음을 통해 공유


HttpClient EventSource 이벤트에서 URI 쿼리 및 조각 삭제

.NET 9에서는 HttpClientSocketsHttpHandler(EventSource 이름: System.Net.Http)에서 내보내는 EventSource 이벤트의 기본 동작이 URI의 쿼리 및 조각 부분을 삭제하도록 수정되었습니다. 이 변경은 편집의 성능 비용을 최소화하면서 쿼리 문자열에 포함된 잠재적으로 중요한 정보의 로깅을 방지하여 개인 정보를 향상시킵니다. 필요한 경우 이 동작을 재정의할 수 있습니다.

도입된 버전

.NET 9 미리 보기 7

이전 동작

이전에는 중요한 정보를 실수로 노출할 수 있는 쿼리 문자열 정보를 내보내고 HttpClient 포함하는 이벤트가 포함되었습니다SocketsHttpHandler.

새 동작

dotnet/runtime#104741변경으로 쿼리와 조각 부분이 기본적으로 HttpClientSocketsHttpHandler 이벤트에서 * 문자로 대체됩니다. 이 변경 사항은 pathAndQueryRequestStartRedirectredirectUri와 같은 특정 이벤트 및 매개 변수에 영향을 미칩니다.

호환성이 손상되는 변경의 형식

이 변경 사항은 동작 변경입니다.

변경 이유

이 변경의 주된 이유는 중요한 정보가 실수로 기록될 위험을 줄여 개인 정보를 향상시키기 위한 것이었습니다. 쿼리 문자열에는 중요한 데이터가 포함되어 있는 경우가 많으며, 기본적으로 로그에서 수정하면 이 정보를 보호하는 데 도움이 됩니다. 구현을 간단하고 효율적으로 유지하기 위해 조각 부분도 스크러빙됩니다.

사용 또는 HttpClient 이벤트를 사용할 SocketsHttpHandler 때 쿼리 문자열 정보가 필요하고 안전한 것으로 확신하는 경우 다음 세 가지 방법 중 하나로 AppContext 스위치를 설정하여 전역적으로 쿼리 문자열 로깅을 사용하도록 설정할 수 있습니다.

  • 프로젝트 파일에서

    <ItemGroup>
      <RuntimeHostConfigurationOption Include="System.Net.Http.DisableUriRedaction" Value="true" />
    </ItemGroup>
    
  • runtimeconfig.json 파일에서

    {
        "runtimeOptions": {
            "configProperties": {
                "System.Net.Http.DisableUriRedaction": true
            }
        }
    }
    
  • 환경 변수를 통해

    DOTNET_SYSTEM_NET_HTTP_DISABLEURIREDACTIONtrue 또는 1로 설정합니다.

그렇지 않으면 아무 작업도 필요하지 않으며 기본 동작은 애플리케이션의 개인 정보 보호 측면을 개선하는 데 도움이 됩니다.

참고 항목

또한 이 스위치는 기본 IHttpClientFactory 로그에서 쿼리 문자열 편집을 사용하지 않도록 설정합니다. 자세한 내용은 IHttpClientFactory 로그의 URI 쿼리 편집을 참조하세요.

영향을 받는 API