Поделиться через


<Элемент clear> для schemeSettings (параметры URI)

Очищает все существующие параметры схемы.

<Конфигурации>
  <Uri>
    <SchemeSettings>
      <Ясно>

Синтаксис

<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>  

См. также раздел