System.Xml Naamruimte

Biedt op standaarden gebaseerde ondersteuning voor het verwerken van XML.

Klassen

Name Description
NameTable

Implementeert een enkele thread.XmlNameTable

UniqueId

Een unieke id die is geoptimaliseerd voor Guids.

XmlAttribute

Vertegenwoordigt een kenmerk. Geldige en standaardwaarden voor het kenmerk worden gedefinieerd in een documenttypedefinitie (DTD) of schema.

XmlAttributeCollection

Vertegenwoordigt een verzameling kenmerken die kunnen worden geopend op naam of index.

XmlBinaryReaderSession

Hiermee kunnen geoptimaliseerde tekenreeksen dynamisch worden beheerd.

XmlBinaryWriterSession

Hiermee kunt u een dynamische woordenlijst gebruiken om algemene tekenreeksen te comprimeren die in een bericht worden weergegeven en de status behouden.

XmlCDataSection

Vertegenwoordigt een CDATA-sectie.

XmlCharacterData

Biedt methoden voor tekstbewerking die door verschillende klassen worden gebruikt.

XmlComment

Vertegenwoordigt de inhoud van een XML-opmerking.

XmlConvert

Xml-namen coderen en decoderen en biedt methoden voor het converteren tussen algemene runtimetypen voor talen en XSD-typen (XML Schema Definition Language). Bij het converteren van gegevenstypen zijn de geretourneerde waarden onafhankelijk van landinstellingen.

XmlDataDocument

Hiermee kunnen gestructureerde gegevens worden opgeslagen, opgehaald en gemanipuleerd via een relationele DataSet.

XmlDeclaration

Vertegenwoordigt het XML-declaratieknooppunt <?xml version='1.0'...?>.

XmlDictionary

Hiermee wordt een woordenlijst geïmplementeerd die wordt gebruikt om de XML-lezer/schrijver-implementaties van Windows Communication Foundation (WCF) te optimaliseren.

XmlDictionaryReader

Een abstract-klasse die de Windows Communication Foundation (WCF) heeft afgeleid van XmlReader om serialisatie en deserialisatie uit te voeren.

XmlDictionaryReaderQuotas

Bevat configureerbare quotumwaarden voor XmlDictionaryReaders.

XmlDictionaryString

Vertegenwoordigt een vermelding die is opgeslagen in een XmlDictionary.

XmlDictionaryWriter

Vertegenwoordigt een abstracte klasse die Windows Communication Foundation (WCF) afgeleid is van XmlWriter om serialisatie en deserialisatie uit te voeren.

XmlDocument

Vertegenwoordigt een XML-document. U kunt deze klasse gebruiken om XML in een document te laden, valideren, bewerken, toevoegen en positioneren.

XmlDocumentFragment

Vertegenwoordigt een lichtgewicht object dat handig is voor bewerkingen voor het invoegen van structuur.

XmlDocumentType

Vertegenwoordigt de declaratie van het documenttype.

XmlElement

Vertegenwoordigt een element.

XmlEntity

Vertegenwoordigt een entiteitsdeclaratie, zoals <! ENTITEIT... >.

XmlEntityReference

Vertegenwoordigt een entiteitsreferentieknooppunt.

XmlException

Retourneert gedetailleerde informatie over de laatste uitzondering.

XmlImplementation

Hiermee definieert u de context voor een set XmlDocument objecten.

XmlLinkedNode

Hiermee wordt het knooppunt direct vóór of na dit knooppunt opgehaald.

XmlNamedNodeMap

Vertegenwoordigt een verzameling knooppunten die kunnen worden geopend op naam of index.

XmlNamespaceManager

Hiermee worden naamruimten omgezet, toegevoegd en verwijderd uit een verzameling en wordt het bereikbeheer voor deze naamruimten geboden.

XmlNameTable

Tabel met atomiseerde tekenreeksobjecten.

XmlNode

Vertegenwoordigt één knooppunt in het XML-document.

XmlNodeChangedEventArgs

Biedt gegevens voor de NodeChanged, NodeChanging, en NodeInsertingNodeInsertedNodeRemovedNodeRemoving gebeurtenissen.

XmlNodeList

Vertegenwoordigt een geordende verzameling knooppunten.

XmlNodeReader

Vertegenwoordigt een lezer die snelle, niet-in de cache geplaatste doorsturen alleen toegang biedt tot XML-gegevens in een XmlNode.

XmlNotation

Vertegenwoordigt een notatiedeclaratie, zoals <! NOTATIE... >

XmlParserContext

Biedt alle contextinformatie die nodig is voor het XmlReader parseren van een XML-fragment.

XmlProcessingInstruction

Vertegenwoordigt een verwerkingsinstructie, die xml definieert om processorspecifieke informatie in de tekst van het document te bewaren.

XmlQualifiedName

Vertegenwoordigt een gekwalificeerde XML-naam.

XmlReader

Vertegenwoordigt een lezer die snelle, niet-in de cache opgeslagen, alleen-doorstuurtoegang biedt tot XML-gegevens.

XmlReaderSettings

Hiermee geeft u een set functies op die moeten worden ondersteund voor het XmlReader object dat door de Create methode is gemaakt.

XmlResolver

Hiermee worden externe XML-resources met de naam omgezet door een URI (Uniform Resource Identifier).

XmlSecureResolver

Helpt bij het beveiligen van een andere implementatie door XmlResolver het XmlResolver object te verpakken en de resources te beperken waartoe de onderliggende XmlResolver gegevens toegang hebben.

XmlSignificantWhitespace

Vertegenwoordigt witruimte tussen markeringen in een knooppunt met gemengde inhoud of witruimte binnen een bereik xml:space= 'behouden'. Dit wordt ook wel significante witruimte genoemd.

XmlText

Vertegenwoordigt de tekstinhoud van een element of kenmerk.

XmlTextReader

Vertegenwoordigt een lezer die snelle, niet-in de cache opgeslagen, alleen-doorstuurtoegang biedt tot XML-gegevens.

U wordt aangeraden in plaats daarvan de XmlReader klas te gebruiken.

XmlTextWriter

Vertegenwoordigt een schrijver die een snelle, niet-in cache geplaatste, forward-only manier biedt voor het genereren van streams of bestanden die XML-gegevens bevatten die voldoen aan de W3C Extensible Markup Language (XML) 1.0 en de naamruimten in XML-aanbevelingen.

U wordt aangeraden in plaats daarvan de XmlWriter klas te gebruiken.

XmlUrlResolver

Hiermee worden externe XML-resources met de naam omgezet door een URI (Uniform Resource Identifier).

XmlValidatingReader

Vertegenwoordigt een lezer die DTD (Document Type Definition) biedt, XML-Data Gereduceerd (XDR)-schema en XSD-validatie (XML Schema Definition Language).

Deze klasse is verouderd. U wordt aangeraden de XmlReaderSettings klasse en de Create methode te gebruiken om een geldige XML-lezer te maken.

XmlWhitespace

Vertegenwoordigt witruimte in elementinhoud.

XmlWriter

Vertegenwoordigt een schrijver die een snelle, niet-in de cache opgeslagen, alleen-doorsturende manier biedt voor het genereren van streams of bestanden die XML-gegevens bevatten.

XmlWriterSettings

Hiermee geeft u een set functies op die moeten worden ondersteund voor het XmlWriter object dat door de Create methode is gemaakt.

XmlXapResolver

Het type XmlXapResolver wordt gebruikt om resources op te lossen in het XAP-pakket van de Silverlight-toepassing.

Interfaces

Name Description
IApplicationResourceStreamResolver

Vertegenwoordigt een resourcestroom-resolver van een toepassing.

IFragmentCapableXmlDictionaryWriter

Bevat eigenschappen en methoden waarmee xml-fragmenten kunnen worden verwerkt wanneer ze worden geïmplementeerd door een XmlDictionaryWriter.

IHasXmlNode

Hiermee kan een klasse een XmlNode van de huidige context of positie retourneren.

IStreamProvider

Vertegenwoordigt een interface die kan worden geïmplementeerd door klassen die streams bieden.

IXmlBinaryReaderInitializer

Biedt methoden voor het opnieuw initialiseren van een binaire lezer om een nieuw document te lezen.

IXmlBinaryWriterInitializer

Hiermee geeft u implementatievereisten voor XML binaire schrijvers die zijn afgeleid van deze interface.

IXmlDictionary

Een interface die het contract definieert dat een XML-woordenlijst moet implementeren om te worden gebruikt door XmlDictionaryReader en XmlDictionaryWriter implementaties.

IXmlLineInfo

Biedt een interface waarmee een klasse regel- en positiegegevens kan retourneren.

IXmlMtomReaderInitializer

Hiermee geeft u implementatievereisten op voor XML MTOM-lezers die zijn afgeleid van deze interface.

IXmlMtomWriterInitializer

Wanneer deze interface wordt geïmplementeerd door een MTOM-schrijver, zorgt deze interface voor initialisatie voor een MTOM-schrijver.

IXmlNamespaceResolver

Biedt alleen-lezentoegang tot een set voorvoegsel- en naamruimtetoewijzingen.

IXmlTextReaderInitializer

Hiermee geeft u implementatievereisten op voor XML-tekstlezers die zijn afgeleid van deze interface.

IXmlTextWriterInitializer

Hiermee geeft u implementatievereisten op voor XML-tekstschrijvers die zijn afgeleid van deze interface.

Enums

Name Description
ConformanceLevel

Hiermee geeft u de hoeveelheid invoer- of uitvoercontrole op die XmlReader en XmlWriter objecten worden uitgevoerd.

DtdProcessing

Hiermee geeft u de opties voor het verwerken van DTD's. De DtdProcessing opsomming wordt door de XmlReaderSettings klasse gebruikt.

EntityHandling

Hiermee geeft u op hoe de XmlTextReader entiteiten worden verwerkt of XmlValidatingReader verwerkt.

Formatting

Hiermee geeft u opmaakopties voor de XmlTextWriter.

NamespaceHandling

Hiermee geeft u op of dubbele naamruimtedeclaraties in de XmlWriter.

NewLineHandling

Hiermee geeft u op hoe regeleinden moeten worden verwerkt.

ReadState

Hiermee geeft u de status van de lezer.

ValidationType

Hiermee geeft u het type validatie dat moet worden uitgevoerd.

WhitespaceHandling

Hiermee geeft u op hoe witruimte wordt verwerkt.

WriteState

Hiermee geeft u de status van de XmlWriter.

XmlDateTimeSerializationMode

Hiermee geeft u op hoe de tijdwaarde moet worden behandeld bij het converteren tussen tekenreeks en DateTime.

XmlDictionaryReaderQuotaTypes

Opsomming van de configureerbare quotumwaarden voor XmlDictionaryReaders.

XmlNamespaceScope

Definieert het bereik van de naamruimte.

XmlNodeChangedAction

Hiermee geeft u het type knooppuntwijziging op.

XmlNodeOrder

Beschrijft de documentvolgorde van een knooppunt in vergelijking met een tweede knooppunt.

XmlNodeType

Hiermee geeft u het type knooppunt.

XmlOutputMethod

Hiermee geeft u de methode op die wordt gebruikt om de XmlWriter uitvoer te serialiseren.

XmlSpace

Hiermee geeft u het huidige xml:space bereik.

XmlTokenizedType

Vertegenwoordigt het XML-type voor de tekenreeks. Hierdoor kan de tekenreeks worden gelezen als een bepaald XML-type, bijvoorbeeld een CDATA-sectietype.

Gedelegeerden

Name Description
OnXmlDictionaryReaderClose

delegate voor een callback-methode bij het sluiten van de lezer.

XmlNodeChangedEventHandler

Vertegenwoordigt de methode die gebeurtenissen verwerktNodeChanged, NodeChanging, NodeInserteden NodeRemovedNodeInsertingNodeRemoving gebeurtenissen.

Opmerkingen

Ondersteunde standaarden

De System.Xml naamruimte ondersteunt deze standaarden:

Zie de sectie Verschillen van de W3C-specificaties voor twee gevallen waarin de XML-klassen verschillen van de W3C-aanbevelingen.

XML asynchroon verwerken

De System.Xml.XmlReader en System.Xml.XmlWriter klassen bevatten een aantal asynchrone methoden die zijn gebaseerd op het asynchrone programmeermodel. Deze methoden kunnen worden geïdentificeerd door de tekenreeks 'Async' aan het einde van hun namen. Met deze methoden kunt u asynchrone code schrijven die vergelijkbaar is met uw synchrone code en kunt u uw bestaande synchrone code eenvoudig migreren naar asynchrone code.

  • Gebruik de asynchrone methoden in apps waarbij er aanzienlijke netwerkstroomlatentie is. Vermijd het gebruik van asynchrone API's voor geheugenstroom of lees-/schrijfbewerkingen voor een lokale bestandsstroom. De invoerstroom XmlTextReaderen XmlTextWriter moeten ook asynchrone bewerkingen ondersteunen. Anders worden threads nog steeds geblokkeerd door I/O-bewerkingen.

  • We raden u niet aan synchrone en asynchrone functieaanroepen te combineren, omdat u het trefwoord mogelijk vergeet te gebruiken await of een synchrone API gebruikt waarbij een asynchrone API nodig is.

  • Stel de XmlReaderSettings.Async vlag XmlWriterSettings.Asynctrue niet in op als u geen asynchrone methode wilt gebruiken.

  • Als u vergeet het await trefwoord op te geven wanneer u een asynchrone methode aanroept, zijn de resultaten niet-deterministisch: U ontvangt mogelijk het verwachte resultaat of een uitzondering.

  • Wanneer een XmlReader object een groot tekstknooppunt leest, kan het slechts een gedeeltelijke tekstwaarde in de cache opslaan en het tekstknooppunt retourneren. Het ophalen van de XmlReader.Value eigenschap kan dus worden geblokkeerd door een I/O-bewerking. Gebruik de XmlReader.GetValueAsync methode om de tekstwaarde op te halen in asynchrone modus of gebruik de XmlReader.ReadValueChunkAsync methode om een groot tekstblok in segmenten te lezen.

  • Wanneer u een XmlWriter object gebruikt, roept u de XmlWriter.FlushAsync methode aan voordat u aanroept XmlWriter.Close om te voorkomen dat een I/O-bewerking wordt geblokkeerd.

Verschillen met de W3C-specificaties

In twee gevallen waarbij beperkingen voor schemaonderdelen van modelgroepen zijn betrokken, verschilt de System.Xml naamruimte van de W3C-aanbevelingen.

Consistentie in elementdeclaraties:

Wanneer vervangingsgroepen worden gebruikt, voldoet de System.Xml implementatie in sommige gevallen niet aan de 'Beperking schemaonderdeel: elementdeclaraties consistent', die wordt beschreven in de sectie Beperkingen voor modelgroepschemaonderdelen van de W3C-specificatie.

Het volgende schema bevat bijvoorbeeld elementen met dezelfde naam, maar verschillende typen in hetzelfde inhoudsmodel en vervangingsgroepen worden gebruikt. Dit zou een fout moeten veroorzaken, maar System.Xml het schema zonder fouten compileert en valideert.

<?xml version="1.0" encoding="utf-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">

   <xs:element name="e1" type="t1"/>
   <xs:complexType name="t1"/>

   <xs:element name="e2" type="t2" substitutionGroup="e1"/>
      <xs:complexType name="t2">
         <xs:complexContent>
            <xs:extension base="t1">
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>

   <xs:complexType name="t3">
      <xs:sequence>
         <xs:element ref="e1"/>
         <xs:element name="e2" type="xs:int"/>
      </xs:sequence>
   </xs:complexType>
</xs:schema>

In dit schema bevat het type t3 een reeks elementen. Vanwege de vervanging kan de verwijzing naar het element e1 uit de reeks resulteren in een element e1 van het type t1 of in het element e2 van het type t2. Het laatste geval zou resulteren in een reeks van twee e2 elementen, waarbij de ene van het type t2 is en de andere van het type xs:int.

Unieke deeltjestoeschrijving:

Onder de volgende voorwaarden voldoet de System.Xml implementatie niet aan de 'Schema Component Constraint: Unique Particle Attribution', die wordt beschreven in de sectie Beperkingen voor modelgroepschemaonderdelen van de W3C-specificatie.

  • Een van de elementen in de groep verwijst naar een ander element.
  • Het element waarnaar wordt verwezen, is een hoofdelement van een vervangingsgroep.
  • De vervangingsgroep bevat een element met dezelfde naam als een van de elementen in de groep.
  • De kardinaliteit van het element dat verwijst naar het hoofdelement van de vervangingsgroep en het element met dezelfde naam als een vervangingsgroepelement is niet vast (minOccurs < maxOccurs).
  • De definitie van het element dat verwijst naar de vervangingsgroep gaat vooraf aan de definitie van het element met dezelfde naam als een vervangingsgroepelement.

In het onderstaande schema is het inhoudsmodel bijvoorbeeld dubbelzinnig en moet er een compilatiefout optreden, maar System.Xml wordt het schema zonder fouten gecompileerd.

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">

  <xs:element name="e1" type="xs:int"/>
  <xs:element name="e2" type="xs:int" substitutionGroup="e1"/>

  <xs:complexType name="t3">
    <xs:sequence>
      <xs:element ref="e1" minOccurs="0" maxOccurs="1"/>
      <xs:element name="e2" type="xs:int" minOccurs="0" maxOccurs="1"/>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="e3" type="t3"/>
</xs:schema>

Als u probeert de volgende XML te valideren op basis van het bovenstaande schema, mislukt de validatie met het volgende bericht: 'Het element 'e3' heeft een ongeldig onderliggend element 'e2'. Er wordt een XmlSchemaValidationException uitzondering gegenereerd.

<e3>
  <e2>1</e2>
  <e2>2</e2>
</e3>

U kunt dit probleem omzeilen door elementdeclaraties in het XSD-document te wisselen. Voorbeeld:

<xs:sequence>
  <xs:element ref="e1" minOccurs="0" maxOccurs="1"/>
  <xs:element name="e2" type="xs:int" minOccurs="0" maxOccurs="1"/>
</xs:sequence>

wordt dit:

<xs:sequence>
  <xs:element name="e2" type="xs:int" minOccurs="0" maxOccurs="1"/>
  <xs:element ref="e1" minOccurs="0" maxOccurs="1"/>
</xs:sequence>

Hier volgt een ander voorbeeld van hetzelfde probleem:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
   <xs:element name="e1" type="xs:string"/>
   <xs:element name="e2" type="xs:string" substitutionGroup="e1"/>

   <xs:complexType name="t3">
      <xs:sequence>
         <xs:element ref="e1" minOccurs="0" maxOccurs="1"/>
         <xs:element name="e2" type="xs:int" minOccurs="0" maxOccurs="1"/>
      </xs:sequence>
   </xs:complexType>
   <xs:element name="e3" type="t3"/>
</xs:schema>

Als u probeert de volgende XML te valideren op basis van het bovenstaande schema, mislukt de validatie met de volgende uitzondering: 'Unhandled Exception: System.Xml.Schema.XmlSchemaValidationException: The 'e2' el element is invalid - The value 'abc' is invalid according its datatype 'http://www.w3.org/2001/XMLSchema:int' - The string 'abc' is not a valid Int32 value.

<e3><e2>abc</e2></e3>

Beveiligingsoverwegingen

De typen en leden in de naamruimte System.Xml zijn afhankelijk van het .NET-beveiligingssysteem. In de volgende secties worden beveiligingsproblemen besproken die specifiek zijn voor XML-technologieën.

Houd er ook rekening mee dat wanneer u de System.Xml typen en leden gebruikt, als de XML gegevens bevat die mogelijk gevolgen hebben voor de privacy, uw app op een manier moet implementeren die de privacy van uw eindgebruikers respecteert.

Externe toegang

Verschillende XML-technologieën hebben de mogelijkheid om andere documenten op te halen tijdens de verwerking. Een documenttypedefinitie (DTD) kan zich bijvoorbeeld in het document bevinden dat wordt geparseerd. De DTD kan ook worden gebruikt in een extern document waarnaar wordt verwezen door het document dat wordt geparseerd. De XSD-technologieën (XML Schema Definition Language) en XSLT hebben ook de mogelijkheid om informatie uit andere bestanden op te nemen. Deze externe resources kunnen enkele beveiligingsproblemen opleveren. U wilt er bijvoorbeeld voor zorgen dat uw app alleen bestanden ophaalt van vertrouwde sites en dat het bestand dat wordt opgehaald geen schadelijke gegevens bevat.

De XmlUrlResolver klasse wordt gebruikt voor het laden van XML-documenten en het oplossen van externe resources, zoals entiteiten, DTD's of schema's, en het importeren of opnemen van instructies.

U kunt deze klasse overschrijven en het XmlResolver object opgeven dat u wilt gebruiken. Gebruik de XmlSecureResolver klasse als u een resource wilt openen waarvan u geen controle heeft of die niet betrouwbaar is. Hiermee XmlSecureResolver verpakt u een XmlResolver en kunt u de resources beperken waartoe de onderliggende XmlResolver gegevens toegang hebben.

Denial of Service

De volgende scenario's worden beschouwd als minder kwetsbaar voor Denial of Service-aanvallen, omdat de System.Xml klassen een middel bieden voor bescherming tegen dergelijke aanvallen.

  • XML-gegevens parseren.

  • Binaire XML-gegevens parseren als de binaire XML-gegevens zijn gegenereerd door Microsoft SQL Server.

  • XML-documenten en -fragmenten schrijven van gegevensbronnen naar het bestandssysteem, stromen, een TextWriterof een StringBuilder.

  • Documenten laden in het DOM-object (Document Object Model) als u een XmlReader object gebruikt en XmlReaderSettings.DtdProcessing instelt op DtdProcessing.Prohibit.

  • Navigeren door het DOM-object.

De volgende scenario's worden niet aanbevolen als u zich zorgen maakt over Denial of Service-aanvallen of als u in een niet-vertrouwde omgeving werkt.

  • DTD-verwerking.

  • Schemaverwerking. Dit omvat het toevoegen van een niet-vertrouwd schema aan de schemaverzameling, het compileren van een niet-vertrouwd schema en het valideren met behulp van een niet-vertrouwd schema.

  • XSLT-verwerking.

  • Parseer elke willekeurige stroom van door de gebruiker geleverde binaire XML-gegevens.

  • DOM-bewerkingen, zoals het uitvoeren van query's, bewerken, het verplaatsen van substructuren tussen documenten en het opslaan van DOM-objecten.

Als u zich zorgen maakt over denial of service-problemen of als u te maken hebt met niet-vertrouwde bronnen, schakelt u DTD-verwerking niet in. Dit is standaard uitgeschakeld voor XmlReader objecten die door de XmlReader.Create methode worden gemaakt.

Note

DTD-verwerking XmlTextReader is standaard toegestaan. Gebruik de XmlTextReader.DtdProcessing eigenschap om deze functie uit te schakelen.

Als DTD-verwerking is ingeschakeld, kunt u de XmlSecureResolver klasse gebruiken om de resources te beperken waartoe de XmlReader toegang toegang heeft. U kunt uw app ook ontwerpen zodat de XML-verwerking geheugen en tijd beperkt is. U kunt bijvoorbeeld time-outlimieten configureren in uw ASP.NET-app.

Overwegingen voor verwerking

Omdat XML-documenten verwijzingen naar andere bestanden kunnen bevatten, is het moeilijk te bepalen hoeveel verwerkingskracht nodig is om een XML-document te parseren. XML-documenten kunnen bijvoorbeeld een DTD bevatten. Als de DTD geneste entiteiten of complexe inhoudsmodellen bevat, kan het veel tijd duren om het document te parseren.

Wanneer u dit gebruikt XmlReader, kunt u de grootte van het document beperken dat kan worden geparseerd door de eigenschap in te XmlReaderSettings.MaxCharactersInDocument stellen. U kunt het aantal tekens beperken dat het resultaat is van het uitbreiden van entiteiten door de eigenschap in te XmlReaderSettings.MaxCharactersFromEntities stellen. Zie de juiste naslagonderwerpen voor voorbeelden van het instellen van deze eigenschappen.

De XSD- en XSLT-technologieën hebben extra mogelijkheden die van invloed kunnen zijn op de verwerkingsprestaties. Het is bijvoorbeeld mogelijk om een XML-schema te maken dat een aanzienlijke hoeveelheid tijd nodig heeft om te verwerken wanneer deze wordt geëvalueerd in een relatief klein document. Het is ook mogelijk om scriptblokken in te sluiten in een XSLT-opmaakmodel. Beide gevallen vormen een mogelijke beveiligingsrisico voor uw app.

Wanneer u een app maakt die gebruikmaakt van de XslCompiledTransform klasse, moet u rekening houden met de volgende items en de gevolgen ervan:

  • XSLT-scripts zijn standaard uitgeschakeld. XSLT-scripts moeten alleen worden ingeschakeld als u scriptondersteuning nodig hebt en u in een volledig vertrouwde omgeving werkt.

  • De XSLT-functie document() is standaard uitgeschakeld. Als u de document() functie inschakelt, beperkt u de resources die toegankelijk zijn door een XmlSecureResolver object door te geven aan de XslCompiledTransform.Transform methode.

  • Extensieobjecten zijn standaard ingeschakeld. Als een XsltArgumentList object met extensieobjecten wordt doorgegeven aan de XslCompiledTransform.Transform methode, worden de extensieobjecten gebruikt.

  • XSLT-opmaakmodellen kunnen verwijzingen naar andere bestanden en ingesloten scriptblokken bevatten. Een kwaadwillende gebruiker kan dit misbruiken door u te voorzien van gegevens of opmaakmodellen die, wanneer deze worden uitgevoerd, ertoe kunnen leiden dat uw systeem wordt verwerkt totdat de computer weinig resources heeft.

  • XSLT-apps die worden uitgevoerd in een omgeving met gemengde vertrouwensrelatie, kunnen leiden tot adresvervalsing van opmaakmodellen. Een kwaadwillende gebruiker kan bijvoorbeeld een object laden met een schadelijk opmaakmodel en dit doorgeven aan een andere gebruiker die de XslCompiledTransform.Transform methode vervolgens aanroept en de transformatie uitvoert.

Deze beveiligingsproblemen kunnen worden beperkt door scripting of de document() functie niet in te schakelen, tenzij het opmaakmodel afkomstig is van een vertrouwde bron en door geen objecten, XSLT-opmaakmodellen of XML-brongegevens van een niet-vertrouwde bron te accepteren XslCompiledTransform .

Afhandeling van uitzonderingen

Uitzonderingen die worden gegenereerd door onderdelen op een lager niveau, kunnen padinformatie vrijgeven die u niet beschikbaar wilt maken voor de app. Uw apps moeten uitzonderingen onderscheppen en ze op de juiste manier verwerken.

Zie ook