Класс System.Xml.Xsl.XslCompiledTransform

Замечание

В этой статье приводятся дополнительные замечания к справочной документации по этому API.

Класс XslCompiledTransform — это процессор XSLT, поддерживающий синтаксис XSLT 1.0. Это новая реализация и включает в себя повышение производительности по сравнению с устаревшим XslTransform классом. Структура XslCompiledTransform класса очень похожа на XslTransform класс. Метод Load загружает и компилирует таблицу стилей, а Transform метод выполняет преобразование XSLT.

Поддержка функции XSLT document() и встроенных блоков скриптов отключена по умолчанию. Эти функции можно включить, создав XsltSettings объект и передав его методу Load .

Дополнительные сведения см. в разделе "Использование класса XslCompiledTransform и миграция из класса XslTransform".

Вопросы безопасности

При создании приложения, использующего XslCompiledTransform класс, следует учитывать следующие элементы и их последствия:

  • По умолчанию скрипты XSLT отключены. Скрипты XSLT должны быть включены только в том случае, если требуется поддержка скриптов, и вы работаете в полностью доверенной среде.

  • Функция XSLT document() отключена по умолчанию. Если включить функцию document() , ограничьте ресурсы, к которым можно получить доступ, передав XmlSecureResolver объект методу Transform .

  • Объекты расширения включены по умолчанию. XsltArgumentList Если объект, содержащий объекты расширения, передается методуTransform, они используются.

  • Таблицы стилей XSLT могут содержать ссылки на другие файлы и внедренные блоки скриптов. Злоумышленник может воспользоваться этим, предоставив вам данные или таблицы стилей, которые при выполнении могут вызвать процесс обработки системой, пока ресурсы компьютера не истощатся.

  • Приложения XSLT, выполняемые в среде с перемешанным уровнем доверия, могут привести к спуфингу таблицы стилей. Например, злоумышленник может загрузить объект с вредной таблицей стилей и передать его другому пользователю, который впоследствии вызывает Transform метод и выполняет преобразование.

Эти проблемы безопасности можно смягчить, не включая document() скрипты или XslCompiledTransform функцию, если таблица стилей не поступает из доверенного источника, а также не принимая объекты, таблицы стилей XSLT или данные источника XML из ненадежного источника.