System.Xml.Xsl.XslCompiledTransform, klasa

Ten artykuł zawiera dodatkowe uwagi dotyczące dokumentacji referencyjnej dla tego interfejsu API.

Klasa XslCompiledTransform jest procesorem XSLT obsługującym składnię XSLT 1.0. Jest to nowa implementacja i obejmuje wzrost wydajności w porównaniu z przestarzałą XslTransform klasą. Struktura XslCompiledTransform klasy jest bardzo podobna XslTransform do klasy. Metoda Load ładuje i kompiluje arkusz stylów, podczas gdy Transform metoda wykonuje przekształcenie XSLT.

Obsługa funkcji XSLT document() i osadzonych bloków skryptów jest domyślnie wyłączona. Te funkcje można włączyć, tworząc XsltSettings obiekt i przekazując go do Load metody .

Aby uzyskać więcej informacji, zobacz Using the XslCompiledTransform Class (Używanie klasy XslCompiledTransform) i Migrating From the XslTransform Class (Migrowanie z klasy XslTransform).

Zagadnienia dotyczące zabezpieczeń

Podczas tworzenia aplikacji korzystającej XslCompiledTransform z klasy należy pamiętać o następujących elementach i ich implikacjach:

  • Skrypty XSLT są domyślnie wyłączone. Skrypty XSLT powinny być włączone tylko wtedy, gdy potrzebujesz obsługi skryptów i pracujesz w w pełni zaufanym środowisku.

  • Funkcja XSLT document() jest domyślnie wyłączona. Jeśli włączysz document() funkcję, ogranicz zasoby, do których można uzyskać dostęp, przekazując XmlSecureResolver obiekt do Transform metody .

  • Obiekty rozszerzenia są domyślnie włączone. XsltArgumentList Jeśli obiekt zawierający obiekty rozszerzenia jest przekazywany do Transform metody, są one używane.

  • Arkusze stylów XSLT mogą zawierać odwołania do innych plików i bloków skryptów osadzonych. Złośliwy użytkownik może wykorzystać ten problem, dostarczając dane lub arkusze stylów, które po wykonaniu mogą spowodować przetworzenie systemu do momentu, gdy komputer nie będzie działać na niskim poziomie zasobów.

  • Aplikacje XSLT działające w środowisku mieszanego zaufania mogą powodować fałszowanie arkuszy stylów. Na przykład złośliwy użytkownik może załadować obiekt ze szkodliwym arkuszem stylów i przekazać go innemu użytkownikowi, który następnie wywołuje Transform metodę i wykonuje przekształcenie.

Te problemy z zabezpieczeniami można rozwiązać, nie włączając skryptów ani document() funkcji, chyba że arkusz stylów pochodzi z zaufanego źródła i nie akceptuje XslCompiledTransform obiektów, arkuszy stylów XSLT lub danych źródłowych XML z niezaufanego źródła.