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


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

Добавляет параметр схемы для имени схемы.

<Конфигурации>
  <Uri>
    <SchemeSettings>
      <Добавить>

Синтаксис

<add
  name="http|https"
  genericUriParserOptions="DontUnescapePathDotsAndSlashes"
/>  

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

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

Атрибуты

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

{Имя атрибута} Атрибут

Значение Описание
genericUriParserOptions Параметры средства синтаксического анализа для этой схемы. Поддерживается только значение genericUriParserOptions= "DontUnescapePathDotsAndSlashes".

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

Нет

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

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

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