Megosztás a következőn keresztül:


Az XSLT biztonsági szempontjai

Az XSLT nyelv számos olyan funkcióval rendelkezik, amelyek nagy erőt és rugalmasságot biztosítanak. Számos olyan funkciót tartalmaz, amelyeket hasznosként külső források is kihasználhatnak. Az XSLT biztonságos használatához ismernie kell az XSLT használatakor felmerülő biztonsági problémák típusait, valamint azokat az alapvető stratégiákat, amelyeket a kockázatok enyhítésére alkalmazhat.

XSLT-bővítmények

Két népszerű XSLT-bővítmény a stíluslapszkript és a bővítményobjektum. Ezek a bővítmények lehetővé teszik az XSLT-processzor számára a kód végrehajtását.

  • A bővítményobjektumok programozási képességeket adnak hozzá az XSL-átalakításokhoz.

  • A szkriptek a bővítményelem használatával beágyazhatók a stíluslapba msxsl:script .

Bővítményobjektumok

A bővítményobjektumok a AddExtensionObject metódussal lesznek hozzáadva. A Bővítményobjektumok támogatásához a FullTrust engedélykészlet szükséges. Ez biztosítja, hogy az engedélyek emelése ne történjen meg a bővítményobjektum-kód végrehajtásakor. Ha FullTrust-engedélyek nélkül próbálja meghívni a AddExtensionObject metódust, az biztonsági kivételt eredményez.

Stíluslapszkriptek

A szkriptek a bővítményelem használatával beágyazhatók egy stíluslapba msxsl:script . A szkriptek támogatása az osztály egyik választható funkciója XslCompiledTransform , amely alapértelmezés szerint le van tiltva. A szkriptek engedélyezéséhez állítsa be a tulajdonságottrue, XsltSettings.EnableScript és adja át az XsltSettings objektumot a Load metódusnak.

Feljegyzés

A szkriptblokkok csak .NET-keretrendszer támogatottak. A .NET Core vagy a .NET 5 vagy újabb verziók nem támogatják őket.

Irányelvek

Csak akkor engedélyezze a szkriptelést, ha a stíluslap megbízható forrásból származik. Ha nem tudja ellenőrizni a stíluslap forrását, vagy ha a stíluslap nem megbízható forrásból származik, adja meg null az XSLT-beállítások argumentumát.

Külső erőforrások

Az XSLT nyelv olyan funkciókkal rendelkezik, mint xsl:importaz , xsl:includevagy a document() függvény, ahol a processzornak fel kell oldania az URI-hivatkozásokat. Az XmlResolver osztály a külső erőforrások feloldására szolgál. Előfordulhat, hogy a külső erőforrásokat a következő két esetben kell megoldani:

  • Stíluslap összeállításakor a rendszer ezt XmlResolver használja xsl:import és xsl:include feloldja.

  • Az átalakítás végrehajtásakor a XmlResolver függvény feloldása document() történik.

    Feljegyzés

    A document() függvény alapértelmezés szerint le van tiltva az XslCompiledTransform osztályban. Ez a funkció engedélyezhető úgy, hogy true beállítja a XsltSettings.EnableDocumentFunction tulajdonságot, és átadja az XsltSettings objektumot a Load metódusnak.

Transform Az Load egyes metódusok közé tartoznak a túlterhelések, amelyek egy argumentumot fogadnak elXmlResolver. Ha nincs megadva, XmlResolver a rendszer egy hitelesítő adatok nélküli alapértelmezett XmlUrlResolver beállítást használ.

Irányelvek

Csak akkor engedélyezze a document() függvényt, ha a stíluslap megbízható forrásból származik.

Az alábbi lista azt ismerteti, hogy mikor érdemes megadni egy objektumot XmlResolver :

  • Ha az XSLT-folyamatnak egy hitelesítést igénylő hálózati erőforráshoz kell hozzáférnie, használhatja XmlResolver a szükséges hitelesítő adatokat.

  • Ha korlátozni szeretné az XSLT-folyamat által elérhető erőforrásokat, használhatja XmlSecureResolver a megfelelő engedélykészletet. Használja az XmlSecureResolver osztályt, ha olyan erőforrást kell megnyitnia, amelyet nem szabályoz, vagy amely nem megbízható.

  • Ha testre szeretné szabni a viselkedést, implementálhatja saját XmlResolver osztályát, és felhasználhatja az erőforrások megoldására.

  • Ha meg szeretné győződni arról, hogy nem fér hozzá külső erőforrásokhoz, megadhatja null az XmlResolver argumentumot.

Lásd még