XML-configuratie (.xml)

W3C Standaard

Extensible Markup Language (XML) is een veelzijdige opmaaktaal die een set regels definieert voor het coderen van documenten in een formaat dat zowel door mensen als door machines kan worden gelezen.

XML online comprimeren

Privé - bestanden verlaten uw apparaat niet

Inspecteren en metadata

Besturingssystemen en bestandsanalysators herkennen XML-bestanden aan de hand van de eerste binaire bytesequentie:

Selecteer of sleep bestanden hierheen

Privé - bestanden verlaten uw apparaat niet

of plak Ctrl+V
Privacygarantie zonder netwerktransmissie: 0 bytes geüpload naar externe servers. Alle verwerking vond lokaal plaats in uw browser-sandbox.

Bestandshandtekening op byteniveau (magic bytes)

Besturingssystemen en bestandsanalysators herkennen XML-bestanden aan de hand van de eerste binaire bytesequentie:

HEX-HANDTEKENING (OFFSET 0):

3C 3F 78 6D

ASCII-WEERGAVE: <?xm

Standaardisatie: W3C Recommendation (XML 1.0 Fifth Edition)

Technische specificaties

ContainerarchitectuurHiërarchische tekstuele opmaaktaal met aangepaste semantische tags en attributen
CompressieGzip / Deflate bereikt 85-92% compressie bij de omslachtige sluittags
Bytevolgorde (endianness)UTF-8- of UTF-16-tekenstroom, bepaald door het encoding-attribuut in de XML-declaratie
KleurruimtenNiet van toepassing
Kanalen en structuurElementen (<tag>), attributen (attr="val"), CDATA-blokken, verwerkingsinstructies
Maximale afmetingenOnbegrensde hiërarchische boomstructuur
TransparantieNiet van toepassing
Streaming en progressiefSAX (Simple API for XML)- en StAX-parsers maken geheugenefficiënt lezen van gegevensstromen mogelijk

Technische vergelijkingsmatrix: XML versus concurrenten

Technisch kenmerkXML (Huidig)JSONYAMLProtocol Buffers
UitgebreidheidHoog (sluittags en attribuutsyntaxis)Laag (compact sleutel-waardeformaat)Laag (op inspringing gebaseerd)Ultralaag (binaire serialisatie)
SchemavalidatieVolwassen XSD- en DTD-standaarden, afgedwongen door de compilerJSON Schema (optioneel)JSON Schema / YAML-schema'sStrikte .proto-schemadefinities
NaamruimtenOndersteuning voor native XML-naamruimten (xmlns)Geen native naamruimtemechanismeGeen native naamruimtemechanismePakketdeclaraties
TransformatiesDeclaratieve XSLT-transformatiepijplijnenAangepaste code / jq-scriptsAangepaste codeAangepaste code

Veelvoorkomende beschadigingen en gids voor hex-herstel

XML Parsing Error: mismatched tag or entity not defined.

Oorzaak: Niet-geëscapete gereserveerde tekens (zoals '&', '<' of '>') of een verschil in hoofdletters en kleine letters tussen openings- en sluittags.

Herstel: Vervang '&' door '&amp;', '<' door '&lt;', '>' door '&gt;', of plaats willekeurige tekst in een CDATA-sectie.

Beveiligingsanalyse en aanvalsvectoren voor parsers

XML-parsers behoren historisch gezien tot de meest aangevallen componenten in zakelijke IT-omgevingen vanwege de krachtige mogelijkheden voor DTD's en entiteitsexpansie.

Bekende aanvalsvectoren

  • XML External Entity (XXE): kwaadaardige DOCTYPE die verwijst naar lokale serverbestanden ('file:///etc/passwd') of interne netwerkeindpunten.
  • Billion Laughs-aanval (XML-bom): geneste entiteitsdeclaraties die exponentieel uitbreiden in het geheugen om een denial of service te veroorzaken.
  • XPath-injectie: niet-opgeschoonde gebruikersinvoer waarmee XML-databases zonder toestemming kunnen worden doorzocht.

Aanbevolen beveiligingspraktijken: Schakel externe DTD-resolutie en externe entiteitsverwerking altijd uit (stel setFeature 'disallow-doctype-decl' in op true) in XML-parsers.

Historische oorsprong en mijlpalen

2008W3C publiceert XML 1.0 Fifth Edition, waarmee moderne internationale tekenondersteuning wordt gestandaardiseerd.
2000W3C publiceert XML Schema 1.0 (XSD) en DOM Level 2, waarmee gestructureerde typen en gebeurtenisarchitecturen worden vastgesteld.
1998W3C publiceert de XML 1.0-aanbeveling als een vereenvoudigde, webvriendelijke deelverzameling van SGML.

Belangrijkste voordelen

  • Strenge schemavalidatie met behulp van XSD (XML Schema Definition) of DTD zorgt voor strikte integriteit van gegevens.
  • Naamruimten (xmlns) voorkomen botsingen tussen elementnamen in complexe documenten met meerdere bronnen.
  • Krachtige toolchains voor query's en transformaties (XPath, XSLT, XQuery).

Technische beperkingen

  • Extreem omslachtig: sluittags herhalen elementnamen, wat zorgt voor grote bestanden en een hoog bandbreedteverbruik.
  • DOM-parsing bouwt grote, geheugenintensieve objectbomen.
  • Gevoelig voor beveiligingskwetsbaarheden zoals XXE (XML External Entity) en entiteitsexpansie.

Interessante technische weetjes

  • XML is een vereenvoudigde subset van SGML (Standard Generalized Markup Language), ontworpen om naadloos via het World Wide Web te werken.
  • Moderne kantoordocumenten (.docx, .xlsx), vectorafbeeldingen (.svg) en RSS-feeds zijn allemaal gespecialiseerde XML-dialecten.
  • De klassieke 'Billion Laughs'-denial-of-service-aanval gebruikt slechts 1 kilobyte aan geneste XML-entiteiten (lol1 die verwijst naar tien lol0's, tot aan lol9) om bij het parsen exponentieel uit te breiden tot 3 gigabyte aan geheugen.

Veelgestelde technische vragen

Wat is het verschil tussen welgevormde en geldige XML?

Welgevormde XML volgt de basisregels van de syntaxis (bij elkaar passende tags, aanhalingstekens rond attributen, één hoofdelement). Geldige XML is welgevormd EN voldoet strikt aan een externe schemadefinitie (XSD of DTD).

Waarom heeft JSON XML vervangen voor de meeste web-API's?

JSON sluit direct aan op de gegevensstructuren van JavaScript en andere programmeertalen (hashmaps en arrays), met veel minder boilerplate, snellere parsing en kleinere netwerkpayloads.

Wat is een XML External Entity (XXE)-kwetsbaarheid?

Een XXE-kwetsbaarheid treedt op wanneer een XML-parser een niet-vertrouwd document verwerkt met een ingeschakelde externe Document Type Definition (DTD). Aanvallers kunnen entiteiten definiëren die verwijzen naar lokale serverbestanden (zoals systeemconfiguraties) of interne netwerk-URL's, waardoor de server vertrouwelijke gegevens leest en openbaar maakt.