Megosztás a következőn keresztül:


XML-olvasó

Az XML-olvasó egy kurzor az XML bemeneti forrása felett. Az XML-olvasó a lényege, hogy egyszerre egy XML-csomópont olvas be, de további segéd API-k is segítik a csomópontok sorozatának olvasását.

A következő típusú olvasói bemenetek támogatottak:

Biztonság

Az olvasó ellenőrzi, hogy az elemen található attribútumok egyediek-e. Az ellenőrzés végrehajtásához szükséges idő az elemen lévő attribútumok számának függvénye, amely a WS_XML_READER_PROPERTY_MAX_ATTRIBUTESis lehet. Ezért a nagy méretű dokumentumok feldolgozása, amikor WS_XML_READER_PROPERTY_MAX_ATTRIBUTES nagy értékre van állítva, szolgáltatásmegtagadásos támadást eredményezhet.

Az olvasó az előtagokat az egyes elemek és attribútumok névtereihez rendeli. A leképezés végrehajtásához szükséges idő az xmlns attribútumok számának függvénye a hatókörben, amely akár WS_XML_READER_PROPERTY_MAX_NAMESPACESis lehet. Ezért a nagy méretű dokumentumok nagy értékűre való beállítása esetén a szolgáltatásmegtagadásos támadás lehetősége is lehet.

Bár az olvasó gondoskodik arról, hogy a dokumentum az xml nyelvhelyességi specifikációját kövesse, és hogy szempontjai a megadott kvótákon belül legyenek, a dokumentum tartalmát továbbra is nem megbízhatónak kell tekinteni, ha nem megbízható forrásból származik. Az olvasó felhasználóinak a WsReadToStartElement , a WsFindAttributevagy a csomópontokmanuális vizsgálatával kell ellenőriznie az összes elem- és attribútumnevet és névteret.

Néhány egyéb megfontolandó helyzet, de nem korlátozódnak a következőkre:

  • Előfordulhat, hogy a várt elemek hiányoznak
  • Váratlan elemek jelenhetnek meg
  • Előfordulhat, hogy a várt attribútumok hiányoznak
  • Váratlan attribútumok jelenhetnek meg
  • Az elemek üres elemként jelenhetnek meg
  • A whitespace nem várt helyeken jelenhet meg

Az olvasó felhasználói nem foglalhatják le a memóriát egyszerűen a dokumentumból beolvasott értékek alapján. Vegyük például a következő XML-dokumentumot:

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

Egy soley-alapú tömb kiosztása abból a feltételezésből indul ki, hogy néhány elem követni fog egy lehetséges támadási vektort. Ebben az esetben az olvasó felhasználójának inkább növekményesen kell lefoglalnia a memóriát az elemek megjelenésekor.

Az XML-olvasó nem támogatja a DTD-t. Az olvasó felhasználójának nem kell aggódnia a DTD-ellenőrzéssel kapcsolatban.

Az XML-olvasók a következő visszahívást használják:

Az XML-olvasók az alábbi enumerálásokat használják:

Az XML-olvasók a következő függvényeket használják:

Az XML-olvasók a következő leírót használják:

Az XML-olvasók a következő struktúrákat használják: