Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Jazyk XSLT má bohatou sadu funkcí, které vám poskytují velký výkon a flexibilitu. Obsahuje mnoho funkcí, které jsou sice užitečné, ale mohou být také zneužity vnějšími zdroji. Abyste mohli XSLT bezpečně používat, musíte porozumět typům problémů se zabezpečením, ke kterým dochází při použití XSLT, a základní strategie, které můžete použít ke zmírnění těchto rizik.
Rozšíření XSLT
Dvě oblíbená rozšíření XSLT jsou skriptování šablon stylů a objekty rozšíření. Tato rozšíření umožňují procesoru XSLT spouštět kód.
Rozšiřující objekty přidávají programovací schopnosti do transformací XSL.
Skripty lze vložit do stylového listu pomocí rozšířením elementu
msxsl:script.
Objekty rozšíření
Rozšiřující objekty jsou přidány pomocí AddExtensionObject metody. Sada oprávnění FullTrust je vyžadována pro podporu objektů rozšíření. Tím se zajistí, že při spuštění kódu objektu rozšíření nedojde ke zvýšení oprávnění. Při pokusu o volání metody AddExtensionObject bez oprávnění FullTrust vznikne výjimka zabezpečení.
Skripty šablon stylů
Skripty lze vložit do šablony stylů pomocí rozšíření elementu msxsl:script. Podpora skriptů je volitelná funkce třídy XslCompiledTransform , která je ve výchozím nastavení zakázaná. Skriptování lze povolit nastavením XsltSettings.EnableScript vlastnosti na true a předáním XsltSettings objektu metodě Load .
Poznámka:
Bloky skriptů jsou podporovány pouze v rozhraní .NET Framework. Nejsou podporovány v .NET Core nebo .NET 5 nebo novější.
Pokyny
Povolte skriptování pouze v případech, kdy šablona stylů pochází z důvěryhodného zdroje. Pokud nemůžete ověřit zdroj šablony stylů, nebo pokud šablona stylů nepochází z důvěryhodného zdroje, zadejte pro argument nastavení XSLT null.
Externí zdroje
Jazyk XSLT má funkce, jako je xsl:import, xsl:include nebo document(), kde procesor potřebuje přeložit odkazy na identifikátor URI. Třída XmlResolver se používá k řešení externích zdrojů. Externí prostředky může být potřeba vyřešit v následujících dvou případech:
Při kompilaci stylů XmlResolver se používá pro rozlišení
xsl:importaxsl:include.Při provádění transformace se XmlResolver používá k vyřešení funkce
document().Poznámka:
Funkce
document()je ve výchozím nastavení zakázána ve třídě XslCompiledTransform. Tuto funkci lze povolit nastavením XsltSettings.EnableDocumentFunction vlastnosti natruea předáním XsltSettings objektu metodě Load .
Metody Load a Transform každá zahrnují přetížení, která přijímají XmlResolver jako jeden z jeho argumentů. Pokud není zadaný XmlResolver, použije se výchozí XmlUrlResolver bez přihlašovacích údajů.
Pokyny
document() Povolte funkci pouze v případech, kdy šablona stylů pochází z důvěryhodného zdroje.
Následující seznam popisuje, kdy chcete zadat XmlResolver objekt:
Pokud proces XSLT potřebuje přístup k síťovému prostředku, který vyžaduje ověření, můžete použít XmlResolver s potřebnými přihlašovacími údaji.
Pokud chcete omezit prostředky, ke kterým má proces XSLT přístup, můžete použít XmlSecureResolver správnou sadu oprávnění. Použijte třídu XmlSecureResolver, pokud potřebujete otevřít prostředek, který neřídíte, nebo který není důvěryhodný.
Pokud chcete přizpůsobit chování, můžete implementovat vlastní XmlResolver třídu a použít ji ke spravování prostředků.
Pokud chcete zajistit, aby nebyly přistupovány žádné externí prostředky, můžete zadat
nullpro argument XmlResolver.