schemeSettings 的 <add> 元素(Uri 设置)
添加某方案名称的方案设置。
<add
name = "http|https" genericUriParserOptions="DontUnescapePathDotsAndSlashes"
/>
特性和元素
以下几节描述了特性、子元素和父元素
特性
特性 |
说明 |
---|---|
name |
应用设置的方案名。 受支持的唯一值名称 ="http"和名称 ="https"。 |
{特性名} 特性
值 |
说明 |
---|---|
genericUriParserOptions |
此方案的分析器选项。 受支持的值只为 genericUriParserOptions ="DontUnescapePathDotsAndSlashes"。 |
子元素
无
父元素
元素 |
说明 |
---|---|
指定如何针对特定方案分析 Uri。 |
备注
默认情况下,在执行路径压缩前,System.Uri 类将取消转义百分号编码的路径分隔符。 这实现为抵御类似于如下攻击的安全机制:
https://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:
https://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>
请参见
参考
System.Configuration.SchemeSettingElement
System.Configuration.SchemeSettingElementCollection
System.Configuration.UriSection