<schemeSettings> 요소(URI 설정)
특정 체계에 대해 Uri가 구문 분석되는 방법을 지정합니다.
<configuration>
<uri>
<schemeSettings>
구문
<schemeSettings>
</schemeSettings>
특성 및 요소
다음 섹션에서는 특성, 자식 요소 및 부모 요소에 대해 설명합니다.
특성
None
자식 요소
요소 | 설명 |
---|---|
add | 체계 이름에 대한 체계 설정을 추가합니다. |
clear | 기존 체계 설정을 모두 지웁니다. |
remove | 체계 이름에 대한 체계 설정을 제거합니다. |
부모 요소
요소 | 설명 |
---|---|
uri | .NET Framework에서 URI(Uniform Resource Identifier)를 사용하여 표현된 웹 주소를 처리하는 방법을 지정하는 설정을 포함합니다. |
설명
기본적으로 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>
<add name="http" genericUriParserOptions="DontUnescapePathDotsAndSlashes"/>
</schemeSettings>
</uri>
</configuration>
요소 정보
네임스페이스: System
참고 항목
.NET