HttpClient EventSource 이벤트에서 URI 쿼리 및 조각 삭제
.NET 9에서는 HttpClient 및 SocketsHttpHandler(EventSource
이름: System.Net.Http
)에서 내보내는 EventSource 이벤트의 기본 동작이 URI의 쿼리 및 조각 부분을 삭제하도록 수정되었습니다. 이 변경은 편집의 성능 비용을 최소화하면서 쿼리 문자열에 포함된 잠재적으로 중요한 정보의 로깅을 방지하여 개인 정보를 향상시킵니다. 필요한 경우 이 동작을 재정의할 수 있습니다.
도입된 버전
.NET 9 미리 보기 7
이전 동작
이전에는 중요한 정보를 실수로 노출할 수 있는 쿼리 문자열 정보를 내보내고 HttpClient
포함하는 이벤트가 포함되었습니다SocketsHttpHandler
.
새 동작
dotnet/runtime#104741변경으로 쿼리와 조각 부분이 기본적으로 HttpClient
및 SocketsHttpHandler
이벤트에서 *
문자로 대체됩니다. 이 변경 사항은 pathAndQuery
의 RequestStart
및 Redirect
의 redirectUri
와 같은 특정 이벤트 및 매개 변수에 영향을 미칩니다.
호환성이 손상되는 변경의 형식
이 변경 사항은 동작 변경입니다.
변경 이유
이 변경의 주된 이유는 중요한 정보가 실수로 기록될 위험을 줄여 개인 정보를 향상시키기 위한 것이었습니다. 쿼리 문자열에는 중요한 데이터가 포함되어 있는 경우가 많으며, 기본적으로 로그에서 수정하면 이 정보를 보호하는 데 도움이 됩니다. 구현을 간단하고 효율적으로 유지하기 위해 조각 부분도 스크러빙됩니다.
권장 조치
사용 또는 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_DISABLEURIREDACTION
을true
또는 1로 설정합니다.
그렇지 않으면 아무 작업도 필요하지 않으며 기본 동작은 애플리케이션의 개인 정보 보호 측면을 개선하는 데 도움이 됩니다.
참고 항목
또한 이 스위치는 기본 IHttpClientFactory
로그에서 쿼리 문자열 편집을 사용하지 않도록 설정합니다. 자세한 내용은 IHttpClientFactory 로그의 URI 쿼리 편집을 참조하세요.
영향을 받는 API
.NET