Freigeben über


XML-Reader

DER XML-Reader ist ein Cursor über einer Eingabequelle von XML. Im Kern liest ein XML-Reader jeweils einen XML-Knoten, es gibt jedoch zusätzliche Hilfs-APIs, um das Lesen einer Sequenz von Knoten zu vereinfachen.

Die folgenden Arten von Lesereingaben werden unterstützt:

Sicherheit

Der Leser überprüft, ob die in einem Element vorhandenen Attribute eindeutig sind. Die zum Ausführen dieser Überprüfung erforderliche Zeit ist eine Funktion der Anzahl der Attribute für das Element, die so groß wie WS_XML_READER_PROPERTY_MAX_ATTRIBUTESsein können. Daher kann die Verarbeitung großer Dokumente, wenn WS_XML_READER_PROPERTY_MAX_ATTRIBUTES auf einen großen Wert festgelegt ist, eine Möglichkeit für einen Denial-of-Service-Angriff darstellen.

Der Leser ordnet Namespaces für jedes Element und jedes Attribut Präfixe zu. Die zum Ausführen dieser Zuordnung erforderliche Zeit ist eine Funktion der Anzahl der XMLns-Attribute im Bereich, die so groß wie WS_XML_READER_PROPERTY_MAX_NAMESPACESsein kann. Daher kann die Verarbeitung großer Dokumente, wenn diese Eigenschaft auf einen großen Wert festgelegt ist, eine Möglichkeit für einen Denial-of-Service-Angriff darstellen.

Während der Leser sicherstellen wird, dass das Dokument der grammatikalischen Spezifikation von XML folgt und dass seine Aspekte innerhalb der angegebenen Kontingente liegen, muss der Inhalt des Dokuments weiterhin als nicht vertrauenswürdig betrachtet werden, wenn es von einer nicht vertrauenswürdigen Quelle stammt. Benutzer des Readers sollten alle Element- und Attributnamen und Namespaces mithilfe WsReadToStartElement-, WsFindAttribute-überprüfen oder manuell Knotenüberprüfen.

Einige andere Situationen, die sie berücksichtigen sollten, sind jedoch nicht auf Folgendes beschränkt:

  • Erwartete Elemente fehlen möglicherweise.
  • Unerwartete Elemente werden möglicherweise angezeigt
  • Erwartete Attribute fehlen möglicherweise.
  • Unerwartete Attribute werden möglicherweise angezeigt
  • Elemente können als leere Elemente angezeigt werden
  • Leerzeichen können an unerwarteten Stellen angezeigt werden

Benutzer des Lesers sollten den Speicher nicht einfach anhand von Werten zuordnen, die aus dem Dokument gelesen werden. Betrachten Sie beispielsweise das folgende XML-Dokument:

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

Die Zuordnung eines Arrays basierend auf der Annahme, dass einige Elemente folgen werden, wäre ein potenzieller Angriffsvektor. Der Benutzer des Lesers in diesem Fall sollte den Speicher stattdessen inkrementell zuordnen, wenn die Elemente angezeigt werden.

DER XML-Reader unterstützt DTD nicht. Der Benutzer des Lesers muss sich nicht um die DTD-Überprüfung kümmern.

Der folgende Rückruf wird mit XML-Lesern verwendet:

Die folgenden Enumerationen werden mit XML-Lesern verwendet:

Die folgenden Funktionen werden mit XML-Lesern verwendet:

Das folgende Handle wird mit XML-Lesern verwendet:

Die folgenden Strukturen werden mit XML-Readern verwendet: