Sdílet prostřednictvím


Čtečka XML

Čtečka XML je kurzorem na vstupní zdroj XML. V jádru čte čtečka XML jeden uzel XML současně, ale existují další pomocná rozhraní API, která usnadňují čtení posloupnosti uzlů.

Podporují se následující typy vstupů čtenářů:

Bezpečnost

Čtenář ověří, že atributy, které jsou přítomné na elementu, jsou jedinečné. Doba potřebná k provedení tohoto ověření je funkce počtu atributů prvku, který může být tak velký jako WS_XML_READER_PROPERTY_MAX_ATTRIBUTES. Zpracování velkých dokumentů při nastavení WS_XML_READER_PROPERTY_MAX_ATTRIBUTES na velkou hodnotu proto může představovat příležitost pro útok na dostupnost služby.

Čtenář namapuje předpony na obory názvů pro každý prvek a atributy. Doba potřebná k provedení tohoto mapování je funkce počtu atributů xmln v oboru, které mohou být tak velké jako WS_XML_READER_PROPERTY_MAX_NAMESPACES. Zpracování velkých dokumentů při nastavení této vlastnosti na velkou hodnotu proto může představovat příležitost pro útok na dostupnost služby.

I když čtenář zajistí, že dokument dodržuje gramatickou specifikaci xml a navíc, že jeho aspekty jsou v rámci zadaných kvót, musí být obsah dokumentu při příchodu z nedůvěryhodného zdroje stále považován za nedůvěryhodný. Uživatelé čtečky by měli zkontrolovat všechny názvy prvků a atributů a obory názvů pomocí WsReadToStartElement, WsFindAttributenebo ruční kontrolou uzlů .

Mezi další situace, které je potřeba vzít v úvahu, patří mimo jiné:

  • Pravděpodobně chybí očekávané elementy.
  • Můžou se objevit neočekávané prvky.
  • Můžou chybět očekávané atributy
  • Můžou se objevit neočekávané atributy.
  • Prvky se můžou zobrazit jako prázdné prvky.
  • Prázdné znaky se můžou objevit na neočekávaných místech

Uživatelé čtenáře by neměli přidělovat paměť jednoduše na základě hodnot načtených z dokumentu. Představte si například následující dokument XML:

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

Přidělení pole založené pouze na předpokladu, že určitý počet prvků bude následovat, by byl potenciální vektor útoku. Uživatel čtečky by v tomto případě měl místo toho přidělovat paměť postupně, jak se zobrazují prvky.

Čtečka XML nepodporuje DTD. Uživatel čtenáře se nemusí zabývat ověřováním DTD.

U čteček XML se používá následující zpětné volání:

Následující výčty se používají se čtečkami XML:

U čteček XML se používají následující funkce:

Následující popisovač se používá se čtečkami XML:

U čteček XML se používají následující struktury: