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


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

Удаляет параметр схемы для имени схемы.

<Конфигурации>
  <Uri>
    <SchemeSettings>
      <Удалить>

Синтаксис

<remove
  name="http|https"
/>

Атрибуты и элементы

В следующих разделах описаны атрибуты, дочерние и родительские элементы.

Атрибуты

Атрибут Описание
name Имя схемы, к которой применяется этот параметр. Поддерживаются только значения name="http" и name="https".

Дочерние элементы

Отсутствует.

Родительские элементы

Элемент Описание
<Элемент 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>  
      <remove name="http"/>  
    </schemeSettings>  
  </uri>  
</configuration>  

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