Sdílet prostřednictvím


Aspekty zabezpečení XSLT

Jazyk XSLT má bohatou sadu funkcí, které vám poskytují velký výkon a flexibilitu. Obsahuje mnoho funkcí, které mohou být i mimo zdroje zneužité. 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 šablony stylů pomocí elementu msxsl:script rozšíření.

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 AddExtensionObject volání metody bez oprávnění FullTrust dojde k vyvolání výjimky zabezpečení.

Skripty šablon stylů

Skripty lze vložit do šablony stylů pomocí elementu msxsl:script rozšíření. 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í null z důvěryhodného zdroje, předejte argument nastavení XSLT.

Externí zdroje

Jazyk XSLT má funkce, jako xsl:importje , xsl:includenebo document() funkce, kde procesor potřebuje přeložit odkazy na identifikátor URI. Třída XmlResolver se používá k překladu externích prostředků. Externí prostředky může být potřeba vyřešit v následujících dvou případech:

Transform Každý Load z nich zahrnuje přetížení, která přijímají XmlResolver jako jeden z jejích argumentů. XmlResolver Pokud není zadaný, použije se výchozí XmlUrlResolver hodnota 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í. XmlSecureResolver Třídu použijte, 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 k řešení prostředků.

  • Pokud chcete zajistit, aby se k argumentu nepřistupovaly žádné externí prostředky, můžete pro XmlResolver tento argument zadatnull.

Viz také