Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article fournit des remarques supplémentaires à la documentation de référence de cette API.
Vous utilisez la Create méthode pour obtenir des XmlReader instances. Cette méthode utilise la XmlReaderSettings classe pour spécifier les fonctionnalités à implémenter dans l’objet XmlReader qu’elle crée.
Pour plus d’informations sur les paramètres à utiliser pour les vérifications de conformité, la validation et d’autres scénarios courants, consultez les sections Remarques des pages de référence XmlReader et Create. Consultez le XmlReaderSettings() constructeur pour obtenir la liste des paramètres par défaut.
Considérations relatives à la sécurité
Tenez compte des éléments suivants lors de l’utilisation de la XmlReaderSettings classe.
Les ProcessInlineSchema et ProcessSchemaLocation indicateurs de validation d’un objet XmlReaderSettings ne sont pas définis par défaut. Lorsque ces indicateurs sont activés, la propriété XmlResolver de l'objet XmlReaderSettings est utilisée pour résoudre les emplacements de schéma rencontrés dans le document d'instance dans l'objet XmlReader. Si l’objet XmlResolver est
null, les emplacements de schéma ne sont pas résolus même si les indicateurs de validation ProcessInlineSchema et ProcessSchemaLocation sont définis.Les schémas ajoutés lors de la validation ajoutent de nouveaux types et peuvent modifier le résultat de validation du document en cours de validation. Par conséquent, les schémas externes ne doivent être résolus qu’à partir de sources approuvées.
Les messages d’erreur de validation peuvent exposer des informations sensibles sur le modèle de contenu. Les messages d’erreur et d’avertissement de validation sont gérés à l’aide du délégué ValidationEventHandler ou exposés sous forme de XmlSchemaValidationException si aucun gestionnaire d’événements n’est fourni à l’objet XmlReaderSettings (les avertissements de validation n’entraînent pas la levée d’un XmlSchemaValidationException). Ces informations de modèle de contenu ne doivent pas être exposées dans des scénarios non approuvés. Les messages d’avertissement de validation sont supprimés par défaut et peuvent être signalés en définissant l’indicateur ReportValidationWarnings .
La SourceUri propriété d’un XmlSchemaValidationException retourne le chemin d’URI du fichier de schéma qui a provoqué l’exception. La propriété SourceUri ne doit pas être exposée dans des scénarios non fiables.
La désactivation de l’indicateur ProcessIdentityConstraints (activé par défaut) est recommandée lors de la validation de grands documents XML non approuvés dans des scénarios de haute disponibilité, par rapport à un schéma avec des contraintes d’identité s’étendant sur une grande partie du document.
XmlReaderSettings les objets peuvent contenir des informations sensibles telles que des informations d’identification utilisateur. Vous devez être prudent lors de la mise en cache d’objets XmlReaderSettings ou lors du passage de l’objet XmlReaderSettings d’un composant à un autre.
Le traitement DTD est désactivé par défaut. Si vous activez le traitement DTD, vous devez être conscient de l'inclusion de DTD à partir de sources non approuvées et des attaques par déni de service possibles. Utilisez le XmlSecureResolver pour restreindre les ressources auxquelles le XmlReader peut accéder.
N’acceptez pas les composants de prise en charge, tels que les objets NameTable, XmlNamespaceManager et XmlResolver, à partir d’une source non approuvée.
L’utilisation de la mémoire d’une application qui utilise XmlReader peut avoir une corrélation avec la taille du document XML analysé. Une forme d’attaque par déni de service consiste à envoyer des documents XML excessivement volumineux à analyser. Vous pouvez limiter la taille du document qui peut être analysée en définissant la MaxCharactersInDocument propriété, puis limiter le nombre de caractères résultant du développement d’entités en définissant la MaxCharactersFromEntities propriété.