Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Язык XSLT имеет широкий набор функций, которые дают вам большую мощность и гибкость. Он включает в себя множество функций, которые, хотя и полезны, также могут использоваться внешними источниками. Чтобы безопасно использовать XSLT, необходимо понять типы проблем безопасности, возникающие при использовании XSLT, и основные стратегии, которые можно использовать для устранения этих рисков.
Расширения XSLT
Два популярных расширения XSLT — это скрипты таблицы стилей и объекты расширения. Эти расширения позволяют обработчику XSLT выполнять код.
Объекты расширения добавляют возможности программирования в преобразования XSL.
Скрипты можно встраивать в таблицу стилей с помощью элемента расширения
msxsl:script.
Объекты расширения
Объекты расширения добавляются с помощью AddExtensionObject метода. Набор разрешений FullTrust необходим для поддержки объектов расширения. Это гарантирует, что повышение прав доступа не происходит при выполнении кода объекта расширения. Попытка вызова AddExtensionObject метода без разрешений FullTrust приводит к возникновению исключения безопасности.
Скрипты таблицы стилей
Скрипты можно включить в лист msxsl:script стилей с помощью элемента расширения. Поддержка скриптов — это необязательная функция класса XslCompiledTransform , отключенного по умолчанию. Скрипты можно включить, установив свойство XsltSettings.EnableScript на true и передав объект XsltSettings в метод Load.
Замечание
Блоки скриптов поддерживаются только в .NET Framework. Они не поддерживаются в .NET Core или .NET 5 или более поздней версии.
Руководящие принципы
Включите скрипты только в том случае, если таблица стилей поступает из доверенного источника. Если не удается проверить источник таблицы стилей или если таблица стилей не получена из надежного источника, передайте значение null для аргумента настроек XSLT.
Внешние ресурсы
Язык XSLT имеет такие функции, как xsl:import, xsl:include или document(), где процессор должен разрешать ссылки на URI. Класс XmlResolver используется для разрешения внешних ресурсов. Внешние ресурсы могут быть решены в следующих двух случаях:
При компиляции стильного листа XmlResolver используется для разрешения
xsl:importиxsl:include.При выполнении преобразования XmlResolver используется для решения функции
document().Замечание
Функция
document()отключена по умолчанию в XslCompiledTransform классе. Эту функцию можно включить, установив XsltSettings.EnableDocumentFunction свойство вtrueи передав объект XsltSettings в метод Load.
Методы Load и Transform включают перегрузки, которые принимают XmlResolver в качестве одного из своих аргументов. XmlResolver Если значение не указано, используется значение по умолчанию XmlUrlResolver без учетных данных.
Руководящие принципы
Включите функцию document() только в том случае, если таблица стилей поступает из надежного источника.
В следующем списке описывается, когда может потребоваться указать XmlResolver объект:
Если процесс XSLT должен получить доступ к сетевому ресурсу, которому требуется проверка подлинности, можно использовать XmlResolver с необходимыми учетными данными.
Если вы хотите ограничить доступ к ресурсам, к которым может получить доступ процесс XSLT, можно использовать правильный XmlSecureResolver набор разрешений. Используйте класс XmlSecureResolver, если необходимо открыть ресурс, который вы не контролируете, или является ненадежным.
Если вы хотите настроить поведение, можно реализовать собственный XmlResolver класс и использовать его для разрешения ресурсов.
Если вы хотите убедиться, что внешние ресурсы не доступны, можно указать
nullдля аргумента XmlResolver .