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

Определяет, как Uri анализируется для определенных схем.

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

Синтаксис

<schemeSettings>
</schemeSettings>  

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

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

Атрибуты

None

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

Элемент Описание
добавление Добавляет параметр схемы для имени схемы.
пусто Очищает все существующие параметры схемы.
remove Удаляет параметр схемы для имени схемы.

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

Элемент Описание
uri Содержит параметры, указывающие, как платформа .NET Framework обрабатывает веб-адреса, выраженные с помощью универсальных идентификаторов ресурсов (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>  

Сведения об элементе

Пространство имен: System

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