Udostępnij przez


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 klasy XslCompiledTransform jest bardzo podobna do klasy XslTransform. 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ć to, dostarczając dane lub arkusze stylów, które po wykonaniu mogą powodować, że system będzie działał, aż zasoby komputera się wyczerpią.

  • 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.