lecteur XML

Le lecteur XML est un curseur sur une source d’entrée de XML. À son cœur, un lecteur XML lit un nœud XML à la fois, mais il existe des API d’assistance supplémentaires pour faciliter la lecture d’une séquence de nœuds.

Les types de lecteurs suivants sont pris en charge :

Sécurité

Le lecteur vérifie que les attributs présents sur un élément sont uniques. Le temps nécessaire pour effectuer cette validation est une fonction du nombre d’attributs sur l’élément qui peut être aussi important que les _ _ _ _ _ attributs max de la propriété du lecteur WS XML. Par conséquent, le traitement de documents volumineux lorsque le _ _ _ _ nombre maximal d' _ attributs de la propriété du lecteur WS XML est défini sur une valeur élevée peut entraîner une attaque par déni de service.

Le lecteur mappera les préfixes aux espaces de noms pour chaque élément et attributs. Le temps nécessaire pour effectuer ce mappage est une fonction du nombre d’attributs xmlns dans la portée, ce qui peut être aussi important que le nombre _ maximal d’espaces de _ _ _ _ noms des propriétés du lecteur WS XML. Par conséquent, le traitement de documents volumineux lorsque cette propriété est définie sur une valeur élevée peut présenter une opportunité d’attaque par déni de service.

Tandis que le lecteur s’assure que le document suit la spécification grammaticale de XML et que ses aspects se trouvent dans les quotas spécifiés, le contenu du document doit toujours être considéré comme non fiable lorsqu’il provient d’une source non fiable. Les utilisateurs du lecteur doivent vérifier tous les noms d’éléments et d’attributs et les espaces de noms à l’aide de WsReadToStartElement, WsFindAttribute, ou en inspectant manuellement les nœuds.

D’autres situations peuvent être prises en compte, mais ne sont pas limitées à :

  • Les éléments attendus sont peut-être manquants
  • Des éléments inattendus peuvent apparaître
  • Les attributs attendus sont peut-être manquants
  • Des attributs inattendus peuvent apparaître
  • Les éléments peuvent apparaître comme des éléments vides
  • Les espaces peuvent apparaître dans des emplacements inattendus

Les utilisateurs du lecteur ne doivent pas allouer de la mémoire en fonction simplement des valeurs lues dans le document. Examinons, par exemple, le document XML suivant :

<array count='1000000'>
   <!-- malicious document provider didn't actually provide 1000000 array items -->
</array>

L’allocation d’un tableau reposant uniquement sur l’hypothèse qu’un certain nombre d’éléments suivras serait un vecteur d’attaque potentiel. Dans ce cas, l’utilisateur du lecteur doit allouer la mémoire de façon incrémentielle à mesure que les éléments apparaissent.

Le lecteur XML ne prend pas en charge DTD. L’utilisateur du lecteur n’a pas besoin de se préoccuper de la vérification DTD.

Le rappel suivant est utilisé avec les lecteurs XML :

Les énumérations suivantes sont utilisées avec les lecteurs XML :

Les fonctions suivantes sont utilisées avec les lecteurs XML :

Le handle suivant est utilisé avec les lecteurs XML :

Les structures suivantes sont utilisées avec les lecteurs XML :