Partager via


Classe System.Xml.XmlReaderSettings

Cet article vous offre des remarques complémentaires à la documentation de référence pour cette API.

Vous utilisez la méthode Create pour obtenir des instances de XmlReader. Cette méthode utilise la classe XmlReaderSettings 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 XmlReader et Create de la documentation de référence. Consultez le constructeur XmlReaderSettings() pour obtenir la liste des paramètres par défaut.

Considérations de sécurité

Tenez compte des éléments suivants lors de l’utilisation de la classe XmlReaderSettings.

  • Les indicateurs de validation ProcessInlineSchema et ProcessSchemaLocation d'un objet XmlReaderSettings ne sont pas activés 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 des schémas 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 changer le résultat de la validation du document en cours de validation. Par conséquent, les schémas externes ne devraient être résolus que s'ils proviennent de sources fiables.

  • 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 en utilisant le délégué ValidationEventHandler ou ils sont exposés en tant que 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’une exception 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 propriété SourceUri d’une 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 approuvés.

  • Nous recommandons de désactiver l’indicateur ProcessIdentityConstraints (activé par défaut) 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é sur une grande partie du document.

  • Les objets XmlReaderSettings peuvent contenir des informations confidentielles telles que des informations d'identification de l'utilisateur. Soyez prudent lorsque vous mettez en cache des objets XmlReaderSettings ou que vous transmettez l'objet XmlReaderSettings d'un composant à un autre.

  • Le traitement des DTD est désactivé par défaut. Si vous activez le traitement des DTD, vous devez être conscient de la possibilité d’inclusion de DTD provenant de sources non approuvées et d’éventuelles attaques par déni de service. Utilisez le XmlSecureResolver pour limiter 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 provenant d'une source non fiable.

  • L'utilisation de la mémoire par une application qui se sert de XmlReader peut être en rapport avec la taille du document XML analysé. Une forme d'attaque par déni de service consiste à envoyer des documents XML extrêmement volumineux pour analyse. Vous pouvez limiter la taille du document qui peut être analysé en définissant la propriété MaxCharactersInDocument, puis limiter le nombre de caractères résultant du développement d’entités en définissant la propriété MaxCharactersFromEntities.