<Элемент 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>