다음을 통해 공유


schemeSettings의 <clear> 요소(URI 설정)

기존 체계 설정을 모두 지웁니다.

<configuration>
  <uri>
    <schemeSettings>
      <clear>

구문

<clear/>  

특성 및 요소

다음 섹션에서는 특성, 자식 요소 및 부모 요소에 대해 설명합니다.

특성

없음

자식 요소

없음

부모 요소

요소 Description
<schemeSettings> 요소(URI 설정) 특정 체계에 대해 Uri가 구문 분석되는 방법을 지정합니다.

설명

기본적으로 System.Uri 클래스는 경로 압축을 실행하기 전에 백분율로 인코딩된 경로 구분 기호를 이스케이프 해제합니다. 이는 다음과 같은 공격에 대한 보안 메커니즘으로 구현되었습니다.

http://www.contoso.com/..%2F..%2F/Windows/System32/cmd.exe?/c+dir+c:\

이 URI가 백분율로 인코딩된 문자를 올바르게 처리하지 않는 모듈로 전달되면 서버에서 다음 명령이 실행될 수 있습니다.

c:\Windows\System32\cmd.exe /c dir c:\

이러한 이유로 System.Uri 클래스는 먼저 경로 구분자를 이스케이프 해제한 다음 경로 압축을 적용합니다. 위의 악성 URL을 System.Uri 클래스 생성자에 전달하면 다음 URI가 생성됩니다.

http://www.microsoft.com/Windows/System32/cmd.exe?/c+dir+c:\

이 기본 동작은 특정 체계에 대한 schemeSettings 구성 옵션을 사용하여 백분율로 인코딩된 경로 구분 기호를 이스케이프 해제하지 않도록 수정할 수 있습니다.

구성 파일

이 요소는 애플리케이션 구성 파일 또는 컴퓨터 구성 파일(Machine.config)에서 사용할 수 있습니다.

예제

다음 예제에서는 모든 체계 설정을 지운 다음, HTTP 체계에 대해 백분율로 인코딩된 경로 구분 기호를 이스케이프하지 않는 지원을 추가하는 Uri 클래스에서 사용하는 구성을 보여 줍니다.

<configuration>  
  <uri>  
    <schemeSettings>  
      <clear/>  
      <add name="http" genericUriParserOptions="DontUnescapePathDotsAndSlashes"/>  
    </schemeSettings>  
  </uri>  
</configuration>  

참고 항목