Элемент <add> для schemeSettings (Параметры URI)
Добавляет параметр схемы для имени схемы.
<add
name = "http|https" genericUriParserOptions="DontUnescapePathDotsAndSlashes"
/>
Атрибуты и элементы
В следующих разделах описаны атрибуты, дочерние элементы и родительские элементы
Атрибуты
Атрибут |
Описание |
---|---|
имя |
Имя схемы, для которой применяется этот параметр. Единственные поддерживаемые значения — name="http"и имя="https". |
Атрибут {Имя_атрибута}
Значение |
Описание |
---|---|
genericUriParserOptions |
Параметры анализатора для этой схемы. Единственное поддерживаемое значение — genericUriParserOptions = "DontUnescapePathDotsAndSlashes". |
Дочерние элементы
Нет
Родительские элементы
Элемент |
Описание |
---|---|
Указывает, как 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