schemeSettings 的 <add> 元素(URI 设置)
为方案名称添加方案设置。
configuration
<uri>
<schemeSettings>
<add>
语法
<add
name="http|https"
genericUriParserOptions="DontUnescapePathDotsAndSlashes"
/>
特性和元素
以下几节描述了特性、子元素和父元素。
特性
属性 | 说明 |
---|---|
name | 此设置适用的方案名称。 唯一受支持的值为 name="http" 和 name="https"。 |
{Attribute name} 特性
值 | 说明 |
---|---|
genericUriParserOptions | 此方案的分析器选项。 唯一受支持的值为 genericUriParserOptions= "DontUnescapePathDotsAndSlashes"。 |
子元素
无
父元素
元素 | 说明 |
---|---|
<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) 中使用。
示例
下面的示例演示 Uri 类使用的配置,用于支持不转义 http 方案的百分号编码的路径分隔符。
<configuration>
<uri>
<schemeSettings>
<add name="http" genericUriParserOptions="DontUnescapePathDotsAndSlashes"/>
</schemeSettings>
</uri>
</configuration>