Cet article a fait l’objet d’une traduction automatique. Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez également afficher le texte anglais dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte traduit.
Traduction
Anglais

System.Xml espace de noms

 

Date de publication : novembre 2016

L'espace de noms System.Xml fournit une prise en charge standard du traitement XML.

ClasseDescription
System_CAPS_pubclassNameTable

Implémente un seul thread XmlNameTable.

System_CAPS_pubclassUniqueId

Identificateur unique optimisé pour les GUID.

System_CAPS_pubclassXmlAttribute

Représente un attribut. Les valeurs valides et par défaut de l'attribut sont définies dans une définition de type de document (DTD) ou dans un schéma.

System_CAPS_pubclassXmlAttributeCollection

Représente une collection d’attributs qui sont accessibles par nom ou index.

System_CAPS_pubclassXmlBinaryReaderSession

Permet la gestion dynamique des chaînes optimisées.

System_CAPS_pubclassXmlBinaryWriterSession

Permet d'utiliser un dictionnaire dynamique pour compresser des chaînes courantes qui apparaissent dans un message et conserver l'état.

System_CAPS_pubclassXmlCDataSection

Représente une section CDATA.

System_CAPS_pubclassXmlCharacterData

Fournit des méthodes de manipulation de texte qui sont utilisées par plusieurs classes.

System_CAPS_pubclassXmlComment

Représente le contenu d'un commentaire XML.

System_CAPS_pubclassXmlConvert

Encode et décode les noms XML, et fournit des méthodes pour la conversion entre les types Common Language Runtime et les types XSD (XML Schema Definition). Lors de la conversion de types de données, les valeurs retournées sont indépendantes des paramètres régionaux.

System_CAPS_pubclassXmlDataDocument

Obsolète. Permet à des données structurées stockées, récupérées, et la manipulation via relationnelle DataSet.

System_CAPS_pubclassXmlDeclaration

Représente le nœud de déclaration XML <?xml version='1.0'...?>.

System_CAPS_pubclassXmlDictionary

Implémente un dictionnaire utilisé pour optimiser les implémentations de lecteur/writer XML de Windows Communication Foundation (WCF).

System_CAPS_pubclassXmlDictionaryReader

Un abstract qui classe les Windows Communication Foundation (WCF) dérive XmlReader pour procéder à la sérialisation et la désérialisation.

System_CAPS_pubclassXmlDictionaryReaderQuotas

Contient des valeurs de quota configurables pour les XmlDictionaryReaders.

System_CAPS_pubclassXmlDictionaryString

Représente une entrée stockée dans un XmlDictionary.

System_CAPS_pubclassXmlDictionaryWriter

Représente un résumé de classe qui Windows Communication Foundation (WCF) dérive XmlWriter pour procéder à la sérialisation et la désérialisation.

System_CAPS_pubclassXmlDocument

Représente un document XML.

Vous pouvez utiliser cette classe pour charger, valider, modifier, ajouter et positionner du contenu XML dans un document. Pour obtenir des exemples, consultez la section Remarks de cette page.

System_CAPS_pubclassXmlDocumentFragment

Représente un objet léger qui est utile pour les opérations d’insertion d’arborescence.

System_CAPS_pubclassXmlDocumentType

Représente la déclaration de type de document.

System_CAPS_pubclassXmlElement

Représente un élément.

System_CAPS_pubclassXmlEntity

Représente une déclaration d’entité, tel que < ! ENTITY... >.

System_CAPS_pubclassXmlEntityReference

Représente un nœud de référence d'entité.

System_CAPS_pubclassXmlException

Retourne des informations détaillées sur la dernière exception.

System_CAPS_pubclassXmlImplementation

Définit le contexte d’un ensemble de XmlDocument objets.

System_CAPS_pubclassXmlLinkedNode

Obtient le nœud qui précède ou suit immédiatement ce nœud.

System_CAPS_pubclassXmlNamedNodeMap

Représente une collection de nœuds qui sont accessibles par nom ou index.

System_CAPS_pubclassXmlNamespaceManager

Résout des espaces de noms dans une collection, ajoute des espaces de noms à une collection, en supprime et gère la portée de ces espaces de noms.

System_CAPS_pubclassXmlNameTable

Table d'objets de chaînes atomisées.

System_CAPS_pubclassXmlNode

Représente un nœud unique dans le document XML.

System_CAPS_pubclassXmlNodeChangedEventArgs

Fournit des données pour le NodeChanged, NodeChanging, NodeInserted, NodeInserting, NodeRemoved et NodeRemoving les événements.

System_CAPS_pubclassXmlNodeList

Représente une collection ordonnée de nœuds.

System_CAPS_pubclassXmlNodeReader

Représente un lecteur fournissant un rapide, non mis en cache vers l’avant uniquement accès aux données XML dans un XmlNode.

System_CAPS_pubclassXmlNotation

Représente une déclaration de notation, tels que < ! NOTATION... >.

System_CAPS_pubclassXmlParserContext

Fournit toutes les informations de contexte requises par le XmlReader pour analyser un fragment XML.

System_CAPS_pubclassXmlProcessingInstruction

Représente une instruction de traitement, définie par le code XML pour conserver les informations spécifiques au processeur dans le texte du document.

System_CAPS_pubclassXmlQualifiedName

Représente un nom qualifié XML.

System_CAPS_pubclassXmlReader

Représente un lecteur fournissant un accès rapide, non mis en cache et en avant uniquement vers les données XML.

Pour parcourir le code source .NET Framework pour ce type, consultez la Reference Source.

System_CAPS_pubclassXmlReaderSettings

Spécifie un ensemble de fonctionnalités pour prendre en charge sur les XmlReader objet créé par le Create (méthode).

System_CAPS_pubclassXmlResolver

Résout les ressources XML externes nommées par un URI (Uniform Resource Identifier).

System_CAPS_pubclassXmlSecureResolver

Aide à sécuriser une autre implémentation de XmlResolver en incluant dans un wrapper l'objet XmlResolver et en limitant les ressources auxquelles le XmlResolver sous-jacent a accès.

System_CAPS_pubclassXmlSignificantWhitespace

Représente un espace blanc entre le balisage d'un nœud de contenu mixte ou un espace blanc dans une portée xml:space= 'preserve'. Ceci est quelquefois appelé aussi espace blanc significatif.

System_CAPS_pubclassXmlText

Représente le contenu texte d'un élément ou attribut.

System_CAPS_pubclassXmlTextReader

Représente un lecteur fournissant un accès rapide, non mis en cache et en avant uniquement vers les données XML.

À compter de .NET Framework 2.0, nous vous recommandons d'utiliser plutôt la classe System.Xml.XmlReader.

System_CAPS_pubclassXmlTextWriter

Représente un writer qui fournit un moyen rapide, non mis en cache et avant uniquement de générer des flux ou des fichiers contenant des données XML conforme au W3C Extensible Markup Language (XML) 1.0 et les espaces de noms dans les recommandations de XML.

À compter de .NET Framework 2.0, nous vous recommandons d'utiliser plutôt la classe System.Xml.XmlWriter.

System_CAPS_pubclassXmlUrlResolver

Résout les ressources XML externes nommées par un URI (Uniform Resource Identifier).

System_CAPS_pubclassXmlValidatingReader

Obsolète. Représente un lecteur fournissant une validation de définition de type de document (DTD), de schéma XDR (XML-Data Reduced) et en langage XSD (XML Schema Definition).

Cette classe est obsolète. À compter de .NET Framework 2.0, nous vous recommandons d'utiliser la classe XmlReaderSettings et la méthode XmlReader.Create pour créer un lecteur XML de validation.

System_CAPS_pubclassXmlWhitespace

Représente un espace blanc dans un contenu d'élément.

System_CAPS_pubclassXmlWriter

Représente un writer qui fournit un moyen rapide, sans mise en cache et en avant de générer des flux de données ou des fichiers contenant des données XML.

System_CAPS_pubclassXmlWriterSettings

Spécifie un ensemble de fonctionnalités pour prendre en charge sur les XmlWriter objet créé par le XmlWriter.Create (méthode).

System_CAPS_pubclassXmlXapResolver

Obsolète. Le type de XmlXapResolver est utilisé pour résoudre des ressources dans le package XAP de l’application Silverlight.

InterfaceDescription
System_CAPS_pubinterfaceIApplicationResourceStreamResolver

Obsolète. Représente une application flux de résolution de ressources.

System_CAPS_pubinterfaceIFragmentCapableXmlDictionaryWriter

Contient des propriétés et des méthodes qui permettent le traitement de fragments XML lorsqu'elles sont implémentées par un XmlDictionaryWriter.

System_CAPS_pubinterfaceIHasXmlNode

Permet à une classe de retourner un XmlNode à partir du contexte actuel ou la position.

System_CAPS_pubinterfaceIStreamProvider

Représente une interface qui peut être implémentée par les classes fournissant des flux.

System_CAPS_pubinterfaceIXmlBinaryReaderInitializer

Fournit des méthodes permettant de réinitialiser un lecteur binaire pour la lecture d'un nouveau document.

System_CAPS_pubinterfaceIXmlBinaryWriterInitializer

Spécifie les implémentations nécessaires pour les writers binaires XML qui dérivent de cette interface.

System_CAPS_pubinterfaceIXmlDictionary

interface qui définit le contrat qu'un dictionnaire XML doit implémenter pour être utilisé par les implémentations XmlDictionaryReader et XmlDictionaryWriter.

System_CAPS_pubinterfaceIXmlLineInfo

Fournit une interface pour permettre à une classe de retourner des informations de ligne et de position.

System_CAPS_pubinterfaceIXmlMtomReaderInitializer

Spécifie les implémentations nécessaires pour les lecteurs XML MTOM qui dérivent de cette interface.

System_CAPS_pubinterfaceIXmlMtomWriterInitializer

Lorsqu'elle est implémentée par un enregistreur MTOM, cette interface garantit l'initialisation pour ce type d'enregistreur.

System_CAPS_pubinterfaceIXmlNamespaceResolver

Fournit l'accès en lecture seule à un ensemble de mappages de préfixes et d'espaces de noms.

System_CAPS_pubinterfaceIXmlTextReaderInitializer

Spécifie les implémentations nécessaires pour les lecteurs de texte XML qui dérivent de cette interface.

System_CAPS_pubinterfaceIXmlTextWriterInitializer

Spécifie les implémentations nécessaires pour les writers de texte XML qui dérivent de cette interface.

DéléguéDescription
System_CAPS_pubdelegateOnXmlDictionaryReaderClose

delegate pour une méthode de rappel lors de la fermeture du lecteur.

System_CAPS_pubdelegateXmlNodeChangedEventHandler

Représente la méthode qui gère les NodeChanged, NodeChanging, NodeInserted, NodeInserting, NodeRemoved et NodeRemoving les événements.

ÉnumérationDescription
System_CAPS_pubenumConformanceLevel

Spécifie la quantité d’entrée ou de sortie que XmlReader et XmlWriter effectuent des objets.

System_CAPS_pubenumDtdProcessing

Spécifie les options de traitement des DTD. Le DtdProcessing énumération est utilisée par la XmlReaderSettings classe.

System_CAPS_pubenumEntityHandling

Spécifie comment la XmlTextReader ou XmlValidatingReader gèrent les entités.

System_CAPS_pubenumFormatting

Spécifie les options de mise en forme pour le XmlTextWriter.

System_CAPS_pubenumNamespaceHandling

Spécifie s’il faut supprimer les déclarations d’espace de noms en double dans le XmlWriter.

System_CAPS_pubenumNewLineHandling

Spécifie comment gérer les sauts de ligne.

System_CAPS_pubenumReadState

Spécifie l'état du lecteur.

System_CAPS_pubenumValidationType

Spécifie le type de validation à effectuer.

System_CAPS_pubenumWhitespaceHandling

Spécifie comment les espaces blancs sont gérés.

System_CAPS_pubenumWriteState

Spécifie l'état de la classe XmlWriter.

System_CAPS_pubenumXmlDateTimeSerializationMode

Indique comment traiter la valeur d’heure lors de la conversion entre chaînes et DateTime.

System_CAPS_pubenumXmlDictionaryReaderQuotaTypes

Énumère les valeurs de quota configurables pour les XmlDictionaryReaders.

System_CAPS_pubenumXmlNamespaceScope

Définit la portée des espaces de noms.

System_CAPS_pubenumXmlNodeChangedAction

Spécifie le type de modification du nœud.

System_CAPS_pubenumXmlNodeOrder

Décrit l'ordre dans le document d'un nœud par rapport à un second nœud.

System_CAPS_pubenumXmlNodeType

Spécifie le type de nœud.

System_CAPS_pubenumXmlOutputMethod

Spécifie la méthode utilisée pour sérialiser le XmlWriter sortie.

System_CAPS_pubenumXmlSpace

Spécifie l’actuel xml:space étendue.

System_CAPS_pubenumXmlTokenizedType

Représente le type XML de la chaîne. Ainsi, la chaîne à être lu comme un type XML particulier, par exemple un type de section CDATA.

Le System.Xml espace de noms prend en charge ces normes :

Consultez la section différences avec les spécifications W3C dans les deux cas dans lequel les classes XML diffèrent des recommandations W3C.

Le .NET Framework fournit également des autres espaces de noms pour les opérations liées à XML. Pour une liste, des descriptions et des liens, consultez la System.Xml Namespaces page Web.

Le System.Xml.XmlReader et System.Xml.XmlWriter classes incluent un nombre de méthodes asynchrones basées sur le. Ces méthodes peuvent être identifiés par la chaîne « Async » à la fin de leur nom. Avec ces méthodes, vous pouvez écrire du code asynchrone qui est similaire à votre code synchrone, et vous pouvez migrer facilement votre code synchrone existant en code asynchrone.

  • Utilisez les méthodes asynchrones dans les applications où la latence du flux de données réseau important. Évitez d’utiliser les API asynchrones pour les flux de mémoire ou des opérations de lecture/écriture de flux de fichier local. Le flux d’entrée, XmlTextReader, et XmlTextWriter doit prendre en charge les opérations asynchrones ainsi. Dans le cas contraire, threads seront bloquées par des opérations d’e/s.

  • Nous ne recommandons pas mélanger des appels de fonction synchrones et asynchrones, car vous pouvez oublier d’utiliser la await mot-clé ou utiliser une API synchrone où un asynchrone est nécessaire.

  • Ne définissez pas la XmlReaderSettings.Async ou XmlWriterSettings.Async indicateur true Si vous ne prévoyez pas d’utiliser une méthode asynchrone.

  • Si vous oubliez de spécifier le await mot clé lorsque vous appelez une méthode asynchrone, les résultats sont non déterministes : vous pouvez recevoir les résultats attendus ou une exception.

  • Lorsqu’un XmlReader objet lit un nœud de texte volumineux, il peut mettre en cache qu’une valeur de texte partielles et retourner le nœud de texte, par conséquent, récupérer les XmlReader.Value propriété risque d’être bloquée par une opération d’e/s. Utilisez la GetValueAsync méthode pour obtenir la valeur de texte en mode asynchrone, ou utilisez le ReadValueChunkAsync méthode pour lire un grand bloc dans des segments.

  • Lorsque vous utilisez un XmlWriter de l’objet, appelez la FlushAsync méthode avant d’appeler Close pour éviter le blocage d’une opération d’e/s.

Dans les deux scénarios qui impliquent des contraintes sur les composants de schéma de groupe de modèle, le System.Xml espace de noms diffère les recommandations du W3C.

Cohérence dans les déclarations d’élément :

Dans certains cas, lorsque les groupes de substitution sont utilisés, le System.Xml implémentation ne répond pas à la « schéma composant contrainte : déclarations d’élément cohérentes, » qui est décrit dans la Constraints on Model Group Schema Components section de la spécification W3C.

Par exemple, le schéma suivant inclut des éléments qui portent le même nom mais des types différents dans le même modèle de contenu et les groupes de substitution sont utilisés. Cela doit provoquer une erreur, mais System.Xml compile et valide le schéma sans erreurs.

<?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>

Dans ce schéma, le type t3 contient une séquence d'éléments. En raison de la substitution, la référence à l'élément e1 de la séquence peut générer soit un élément e1 de type t1, soit un élément e2 de type t2. Ce dernier cas aurait pour résultat une séquence de deux e2 éléments, où un est de type t2 et l’autre est de type xs:int.

Attribution de particule unique :

Dans les conditions suivantes, le System.Xml implémentation ne répond pas à la « schéma composant contrainte : Attribution de particule Unique, » qui est décrit dans la Constraints on Model Group Schema Components section de la spécification W3C.

  • L'un des éléments du groupe fait référence un autre élément.

  • L'élément référencé est un élément head d'un groupe de substitution.

  • Le groupe de substitution contient un élément qui a le même nom que l’un des éléments dans le groupe.

  • La cardinalité de l’élément qui fait référence à l’élément head de groupe de substitution et l’élément portant le même nom qu’un élément de groupe de substitution n’est pas fixe (minOccurs < maxOccurs).

  • La définition de l’élément qui référence le groupe de substitution précède la définition de l’élément avec le même nom qu’un élément de groupe de substitution.

Par exemple, dans le schéma ci-dessous le modèle de contenu est ambigu et doit provoquer une erreur de compilation, mais System.Xml compile le schéma sans erreurs.

<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>

Si vous essayez de valider le code XML suivant par rapport au schéma ci-dessus, la validation échoue avec le message suivant : « l’élément « e3 » possède enfant non valide e2' élément' ». et un XmlSchemaValidationException exception sera levée.

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

Pour contourner ce problème, vous pouvez inverser les déclarations d’élément dans le document XSD. Exemple :

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

devient cela :

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

Voici un autre exemple de ce problème :

<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>

Si vous essayez de valider le code XML suivant par rapport au schéma ci-dessus, la validation échoue avec l’exception suivante : « Exception non gérée : System.Xml.Schema.XmlSchemaValidationException : l’élément el « e2 » est non valide - la valeur 'abc' n’est pas valide selon son type de données 'http://www.w3.org/2001/XMLSchema:int' : la chaîne « abc » n’est pas une valeur Int32 valide. » \

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

Les types et membres dans le System.Xml espace de noms s’appuient sur la. Les sections suivantes traitent des problèmes de sécurité qui sont spécifiques aux technologies XML. Pour plus d’informations, consultez les classes spécifiques et les membres indiqués et rendez-vous sur le XML Developer Center pour des informations techniques, des téléchargements, des groupes de discussion et autres ressources pour les développeurs XML.

Notez également que lorsque vous utilisez la System.Xml types et membres, si le code XML contient des données qui a des implications en matière de confidentialité potentiels, vous devez implémenter votre application d’une façon qui respecte la confidentialité de vos utilisateurs finaux.

Accès externe

Plusieurs technologies XML permettent de récupérer d'autres documents pendant le traitement. Par exemple, une définition de type de document (DTD) peut résider dans le document en cours d'analyse. La DTD peut également résider dans un document externe référencé par le document en cours d'analyse. Le langage XSD (XML Schema Definition) et les technologies XSLT permettent également d'inclure des informations provenant d'autres fichiers. Ces ressources externes peuvent présenter quelques problèmes de sécurité. Par exemple, vous souhaiterez vous assurer que votre application extrait les fichiers uniquement à partir des sites de confiance, et que le fichier il récupère ne contient pas des données malveillantes.

La XmlUrlResolver classe est utilisée pour charger des documents XML et pour résoudre des ressources externes telles que les entités, DTD ou schémas et d’importer ou d’inclure des directives.

Vous pouvez substituer cette classe et spécifier le XmlResolver objet à utiliser. La classe XmlSecureResolver doit être utilisée si vous devez ouvrir une ressource non contrôlée ou non fiable. L'objet XmlSecureResolver enveloppe l'objet XmlResolver et permet de limiter les ressources auxquelles l'objet XmlResolver sous-jacent a accès.

Déni de service

Les scénarios suivants sont considérés comme moins vulnérables aux attaques de refus de service car les classes System.Xml fournissent un moyen de protection contre ces attaques.

  • Analyse de données de texte XML

  • L’analyse des données XML binaires si les données XML binaires a été générées par Microsoft SQL Server.

  • Écriture de documents XML et de fragments provenant de sources de données dans le système de fichiers, des flux, un objet TextWriter ou StringBuilder

  • Chargement de documents dans l'objet DOM (Document Object Model) si un objet XmlReader est utilisé et si DtdProcessing est défini sur Prohibit

  • Exploration de l'objet DOM

Les scénarios suivants ne sont pas recommandés en cas de crainte concernant les attaques de refus de service ou d'utilisation d'un environnement non fiable.

  • Traitement DTD

  • Traitement de schéma - Il comprend l'ajout d'un schéma non fiable à la collection de schémas, la compilation d'un schéma non fiable et la validation à l'aide d'un schéma non fiable.

  • Traitement XSLT

  • Analyse de n'importe quel flux arbitraire de données XML binaires fournies par l'utilisateur

  • Opérations DOM telles que l'interrogation, la modification, le déplacement de sous-arborescences entre des documents et l'enregistrement d'objets DOM

Si vous êtes inquiet de déni de service ou si vous êtes confronté à des sources non approuvées, n’activez pas le traitement DTD. Elle est désactivée par défaut sur XmlReader des objets qui les Create méthode crée.

System_CAPS_noteRemarque

L'objet XmlTextReader permet le traitement DTD par défaut. La propriété XmlTextReader.DtdProcessing permet de désactiver cette fonction.

Si vous avez activé le traitement DTD, vous pouvez utiliser la XmlSecureResolver classe pour limiter les ressources qui les XmlReader peut accéder. Vous pouvez également concevoir votre application afin que le traitement XML de la mémoire est limité et de temps. Par exemple, vous pouvez configurer le délai d’expiration dans votre application ASP.NET.

Considérations de traitement

Les documents XML pouvant faire référence à d'autres fichiers, il est difficile de déterminer la puissance de traitement nécessaire pour analyser un document XML. Les documents XML peuvent, par exemple, inclure une DTD. Si la DTD comporte des entités imbriquées ou des modèles de contenu complexes, l'analyse du document peut durer longtemps.

Lorsque vous utilisez XmlReader, vous pouvez restreindre la taille du document qu'il sera possible d'analyser en définissant la propriété MaxCharactersInDocument. Définissez la propriété MaxCharactersFromEntities pour limiter le nombre maximal de caractères résultant des extensions d'entités. Consultez les rubriques de référence appropriées pour obtenir des exemples de définition de ces propriétés.

Les technologies XSD et XSLT disposent de fonctionnalités supplémentaires qui peuvent affecter les performances de traitement. Par exemple, il est possible de construire un schéma XML nécessitant un traitement relativement long lorsqu'il est évalué en fonction d'un document relativement petit. Il est également possible d'intégrer des blocs de script dans une feuille de style XSLT. Les deux cas représentent une menace potentielle pour la sécurité de votre application.

Lorsque la création d’une application qui utilise le XslCompiledTransform de classe, vous devez connaître les éléments suivants et leurs implications :

  • Le script XSLT est désactivé par défaut. Le script XSLT ne doit être activé que si la prise en charge des scripts est nécessaire et si vous travaillez dans un environnement totalement fiable.

  • La fonction document() XSLT est désactivée par défaut. Si vous activez la fonction document(), limitez les ressources accessibles en transmettant un objet XmlSecureResolver à la méthode Transform.

  • Les objets d'extension sont activés par défaut. Si un objet XsltArgumentList contenant des objets d'extension est transmis à la méthode Transform, les objets d'extension sont utilisés.

  • Les feuilles de style XSLT peuvent inclure des références à d'autres fichiers et à des blocs de script intégrés. Un utilisateur malveillant peut exploiter cette fonction en fournissant des données ou feuilles de style qui, une fois exécutées, peuvent entraîner l'exécution du traitement jusqu'à l'épuisement des ressources de l'ordinateur.

  • Les applications XSLT fonctionnant dans un environnement fiable mixte peuvent entraîner une usurpation de feuille de style. Un utilisateur malveillant peut, par exemple, charger un objet avec une feuille de style nuisible et le transmettre à un autre utilisateur qui appelle ensuite la méthode Transform et exécute la transformation.

Vous pouvez réduire ces problèmes de sécurité en désactivant le script ou la fonction document() sauf si la feuille de style provient d'une source fiable et en refusant les objets XslCompiledTransform, les feuilles de style XSLT ou les données de base XML provenant d'une source non fiable.

Gestion des exceptions

Les exceptions levées par des composants de niveau inférieur peuvent divulguer des informations de chemin d’accès que vous ne souhaitez pas exposées à l’application. Vos applications doivent intercepter les exceptions et les traiter correctement.

Retour au début
Afficher: