XML konfiguráció (.xml)

W3C Szabvány

Az Extensible Markup Language (XML) sokoldalú jelölőnyelv, amely szabályokat határoz meg a dokumentumok ember és gép számára egyaránt olvasható formátumban történő kódolására.

XML tömörítése online

Privát - a fájlok soha nem hagyják el az eszközét

Vizsgálat és metaadatok

Az operációs rendszerek és a fájlelemzők a kezdő bináris bájtsorozat vizsgálatával azonosítják a(z) XML fájlokat:

Válasszon ki vagy húzzon ide fájlokat

Privát - a fájlok soha nem hagyják el az eszközét

vagy beillesztés Ctrl+V
Adatvédelmi garancia hálózati adatátvitel nélkül: 0 bájt került fel külső szerverekre. Minden feldolgozás helyben, a böngésző elkülönített környezetében történt.

Bájtszintű fejlécaláírás (fájlazonosító bájtok)

Az operációs rendszerek és a fájlelemzők a kezdő bináris bájtsorozat vizsgálatával azonosítják a(z) XML fájlokat:

HEX ALÁÍRÁS (ELTOLÁS 0):

3C 3F 78 6D

ASCII ÁBRÁZOLÁS: <?xm

Szabványosítás: W3C Recommendation (XML 1.0 Fifth Edition)

Műszaki specifikációk

Konténer architektúraHierarchikus szöveges jelölőnyelv egyedi szemantikai tagekkel és attribútumokkal
TömörítésA Gzip / Deflate 85%-92%-os tömörítést ér el a terjedelmes záró tageken
BájtsorrendUTF-8 / UTF-16 karaktersorozat, amelyet az XML deklaráció kódolási attribútuma határoz meg
SzínterekNem alkalmazható
Csatornák és struktúraElemek (<tag>), attribútumok (attr="val"), CDATA blokkok, feldolgozási utasítások
Max. méretekKorlátlan hierarchikus faszerkezet
ÁtlátszóságNem alkalmazható
Streaming és progresszívA SAX- és StAX-elemzők memóriatakarékos adatfolyam-olvasást tesznek lehetővé

Műszaki összehasonlító mátrix: XML vs. versenytársak

Technikai attribútumXML (Jelenlegi)JSONYAMLProtocol Buffers
BőbeszédűségMagas (zárócímkék és attribútumszintaxis)Alacsony (kompakt kulcs-érték formátum)Alacsony (behúzásalapú)Ultra-alacsony (bináris szerializáció)
SémaellenőrzésKifejlett XSD és DTD szabványok fordítói ellenőrzésselJSON Schema (opcionális)JSON Schema / YAML sémákSzigorú .proto-sémadefiníciók
NévterekNatív XML-névtértámogatás (xmlns)Nincs natív névtérmechanizmusNincs natív névtérmechanizmusCsomagdeklarációk
ÁtalakításokXSLT deklaratív átalakítási folyamatokEgyedi kód / jq szkriptekEgyedi kódEgyedi kód

Gyakori sérülési módok és hexadecimális helyreállítási útmutató

XML-elemzési hiba: nem egyező zárótag vagy nem definiált entitás.

Kiváltó ok: Nem escape-elt fenntartott karakterek (mint az '&', '<' vagy '>') vagy eltérés a nyitó és záró tagek között.

Helyreállítás: Cserélje le az '&'-t '&amp;'-re, a '<'-t '&lt;'-re, a '>'-t '&gt;'-re, vagy csomagolja be a tetszőleges szöveget '<![CDATA[ ... ]]>'' blokkokba.

Biztonsági elemzés és elemző (parser) támadási vektorok

Az XML-elemzők történelmileg a vállalati számítástechnika egyik leginkább támadott komponensei voltak a hatékony DTD- és entitásbővítési képességek miatt.

Ismert támadási vektorok

  • XML External Entity (XXE): Rosszindulatú DOCTYPE, amely helyi kiszolgálófájlokra ('file:///etc/passwd') vagy belső hálózati végpontokra hivatkozik.
  • Milliárd nevetés támadás (XML Bomb): Beágyazott entitásdeklarációk, amelyek exponenciálisan bővülnek a memóriában, szolgáltatásmegtagadást okozva.
  • XPath-injekció: Nem szűrt felhasználói bemenetek, amelyek jogosulatlan lekérdezést tesznek lehetővé az XML-adatbázisokban.

Ajánlott védekezési módszerek: Mindig tiltsa le a külső DTD-feloldást és a külső entitások feldolgozását (állítsa a 'disallow-doctype-decl' beállítást true értékre) az XML-elemzőkben.

Történeti háttér és mérföldkövek

2008A W3C kiadja az XML 1.0 ötödik kiadását, szabványosítva a modern nemzetközi karaktertámogatást.
2000A W3C kiadja az XML Schema 1.0 (XSD) és DOM Level 2 specifikációkat, megalapozva a strukturált típusokat és az eseményalapú architektúrákat.
1998A W3C kiadja az XML 1.0 ajánlást az SGML egyszerűsített, webbarát részhalmazaként.

Főbb előnyök

  • A szigorú sémaellenőrzés XSD (XML Schema Definition) vagy DTD használatával biztosítja a szigorú adatintegritást.
  • A névterek (xmlns) megakadályozzák az elemek neveinek ütközését összetett, több forrásból származó dokumentumokban.
  • Erőteljes lekérdezési és átalakítási eszközkészlet (XPath, XSLT, XQuery).

Technikai korlátok és hátrányok

  • Rendkívül bőbeszédű: a zárócímkék megismétlik az elemek neveit, ami nagy fájlméretet és jelentős sávszélesség-igényt okoz.
  • A DOM elemzés nagy, nagy memóriaigényű objektumfákat hoz létre.
  • Ki van téve az XML External Entity (XXE) és az entitáskibővítési támadásoknak.

Érdekes technikai tudnivalók

  • Az XML az SGML (Standard Generalized Markup Language) egyszerűsített részhalmaza, amelyet úgy terveztek, hogy zökkenőmentesen működjön a világhálón (World Wide Web).
  • A modern irodai dokumentumok (.docx, .xlsx), a vektorképek (.svg) és az RSS-hírcsatornák mind speciális XML-dialektusok.
  • A klasszikus „Milliárd nevetés" (Billion Laughs) szolgáltatásmegtagadási támadás mindössze 1 kilobájtnyi beágyazott XML-entitást használ (a lol1 tíz lol0-ra hivatkozik, egészen lol9-ig), amely elemzéskor exponenciálisan 3 gigabájtnyi memóriát foglal le.

Gyakran Ismételt Műszaki Kérdések

Mi a különbség a jól formázott (well-formed) és az érvényes (valid) XML között?

A „jól formázott" XML betartja az alapvető szintaxisszabályokat (egyező tagek, idézőjelek az attribútumok körül, egyetlen gyökérelem). Az „érvényes" XML jól formázott ÉS szigorúan megfelel egy külső sémadefiníciónak (XSD vagy DTD).

Miért váltotta fel a JSON az XML-t a legtöbb webes API esetében?

A JSON közvetlenül leképezhető a natív JavaScript- és programozási nyelvi adatszerkezetekre (hash-táblák és tömbök), sokkal kevesebb sablonkóddal, gyorsabb elemzéssel és kisebb hálózati adatmennyiséggel.

Mi az az XML External Entity (XXE) sérülékenység?

Az XXE-sérülékenység akkor fordul elő, amikor egy XML-elemző feldolgoz egy nem megbízható dokumentumot engedélyezett külső dokumentumtípus-definícióval (DTD). A támadók olyan entitásokat határozhatnak meg, amelyek a helyi kiszolgálófájlokra (például rendszerkonfigurációkra) vagy belső hálózati URL-ekre mutatnak, így a kiszolgáló elolvashatja és felfedheti a bizalmas adatokat.