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


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

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

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

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

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

Атрибуты

Атрибут

Описание

имя

Имя схемы, для которой применяется этот параметр. Единственные поддерживаемые значения — name="http"и имя="https".

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

Значение

Описание

genericUriParserOptions

Параметры анализатора для этой схемы. Единственное поддерживаемое значение — genericUriParserOptions = "DontUnescapePathDotsAndSlashes".

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

Нет

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

Элемент

Описание

<schemeSettings>

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

Заметки

По умолчанию класс System.Uri разэкранирует закодированные знаками процента разделители путей до выполнения сжатия пути. Это было реализовано следующим образом, как механизм обеспечения безопасности от атак:

https://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):

https://www.microsoft.com/Windows/System32/cmd.exe?/c+dir+c:\\

Это поведение по умолчанию может быть изменено так, чтобы закодированные знаками процента разделители пути не разэкранировались; для этого к конкретной схеме следует применить параметр конфигурации schemeSettings.

Файлы конфигурации

Этот элемент может быть использован в файле конфигурации приложения или в файле конфигурации компьютера (Machine.config).

Пример

В следующем примере кода показывается конфигурация, используемая классом Uri для поддержки отмены использования процентных escape-символов для разделителей пути в схеме HTTP.

<configuration>
  <uri>
    <schemeSettings>
      <add name="http" genericUriParserOptions="DontUnescapePathDotsAndSlashes"/>
    </schemeSettings>
  </uri>
</configuration>

См. также

Ссылки

Схема параметров сети

System.Configuration.SchemeSettingElement

System.Configuration.SchemeSettingElementCollection

System.Configuration.UriSection

UriSection.SchemeSettings

System.GenericUriParserOptions

System.Uri