schemeSettings 的 <clear> 元素(Uri 设置)

清除所有现有方案设置。

configuration
  <uri>
    <schemeSettings>
      <clear>

语法

<clear/>  

特性和元素

下列各节描述了特性、子元素和父元素。

特性

无。

子元素

无。

父元素

元素 说明
<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>  
      <clear/>  
      <add name="http" genericUriParserOptions="DontUnescapePathDotsAndSlashes"/>  
    </schemeSettings>  
  </uri>  
</configuration>  

请参阅