Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
De XSLT-taal heeft een uitgebreide set functies die u veel kracht en flexibiliteit bieden. Het bevat veel functies die, hoewel nuttig, ook door externe bronnen kunnen worden misbruikt. Als u XSLT veilig wilt gebruiken, moet u de typen beveiligingsproblemen begrijpen die zich voordoen bij het gebruik van XSLT en de basisstrategieën die u kunt gebruiken om deze risico's te beperken.
XSLT-extensies
Twee populaire XSLT-extensies zijn scripts voor stijlbladen en extensieobjecten. Met deze extensies kan de XSLT-processor code uitvoeren.
Extensieobjecten voegen programmeermogelijkheden toe aan XSL-transformaties.
Scripts kunnen worden ingesloten in het opmaakmodel met behulp van het
msxsl:scriptextensie-element.
Extensieobjecten
Extensieobjecten worden toegevoegd met behulp van de AddExtensionObject methode. De machtigingenset FullTrust is vereist voor de ondersteuning van extensieobjecten. Dit zorgt ervoor dat uitbreiding van machtigingen niet plaatsvindt wanneer de extensieobjectcode wordt uitgevoerd. Als u de AddExtensionObject methode probeert aan te roepen zonder FullTrust-machtigingen, wordt er een beveiligingsonderzondering gegenereerd.
Stijlbladscripts
Scripts kunnen worden ingesloten in een opmaakmodel met behulp van het msxsl:script extensie-element. Scriptondersteuning is een optionele functie voor de XslCompiledTransform klasse die standaard is uitgeschakeld. Scripting kan worden ingeschakeld door de XsltSettings.EnableScript eigenschap in te true stellen op en het XsltSettings object door te geven aan de Load methode.
Opmerking
Scriptblokken worden alleen ondersteund in .NET Framework. Ze worden niet ondersteund op .NET Core of .NET 5 of hoger.
Richtlijnen
Schakel scripting alleen in wanneer het opmaakmodel afkomstig is van een vertrouwde bron. Als u de bron van het opmaakmodel niet kunt controleren of als het opmaakmodel niet van een vertrouwde bron afkomstig is, gebruik dan null als argument voor de XSLT-instellingen.
Externe resources
De XSLT-taal heeft functies zoals xsl:import, xsl:includeof de document() functie, waarbij de processor URI-verwijzingen moet oplossen. De XmlResolver klasse wordt gebruikt om externe resources op te lossen. In de volgende twee gevallen moeten externe bronnen wellicht worden opgelost:
Bij het compileren van een opmaakmodel wordt de XmlResolver gebruikt voor
xsl:importenxsl:includeresolutie.Bij het uitvoeren van de transformatie wordt de XmlResolver functie gebruikt om de
document()functie op te lossen.Opmerking
De
document()functie is standaard uitgeschakeld voor de XslCompiledTransform klasse. Deze functie kan worden ingeschakeld door de XsltSettings.EnableDocumentFunction eigenschap in te stellen optrueen het XsltSettings object door te geven aan de Load methode.
De Load en Transform methoden bevatten allemaal overbelastingen die een XmlResolver als een van de argumenten accepteren. Als er geen XmlResolver is gespecificeerd, wordt er standaard een XmlUrlResolver zonder inloggegevens gebruikt.
Richtlijnen
Schakel de document() functie alleen in wanneer het opmaakmodel afkomstig is van een vertrouwde bron.
In de volgende lijst wordt beschreven wanneer u mogelijk een XmlResolver object wilt opgeven:
Als het XSLT-proces toegang nodig heeft tot een netwerkresource waarvoor verificatie is vereist, kunt u een XmlResolver met de benodigde referenties gebruiken.
Als u de resources wilt beperken waartoe het XSLT-proces toegang heeft, kunt u een XmlSecureResolver met de juiste machtigingenset gebruiken. Gebruik de XmlSecureResolver klasse als u een resource wilt openen waarvan u geen controle heeft of die niet betrouwbaar is.
Als u het gedrag wilt aanpassen, kunt u uw eigen XmlResolver klasse implementeren en deze gebruiken om resources op te lossen.
Als u ervoor wilt zorgen dat er geen externe bronnen worden benaderd, kunt u
nullopgeven voor het XmlResolver argument.