XML-konfigurasjon (.xml)
W3C StandardExtensible Markup Language (XML) er et allsidig oppmerkingsspråk som definerer regler for koding av dokumenter i et format som kan leses av både mennesker og maskiner.
Komprimer XML på nett
Privat - filer forlater aldri enheten din
Inspeksjon og metadata
Operativsystemer og filanalysatorer identifiserer XML-filer ved å undersøke den innledende binære bytesekvensen:
Filsignatur på bytenivå (magiske byte)
Operativsystemer og filanalysatorer identifiserer XML-filer ved å undersøke den innledende binære bytesekvensen:
HEX-SIGNATUR (OFFSET 0):
3C 3F 78 6DASCII-REPRESENTASJON: <?xm
Standardisering: W3C Recommendation (XML 1.0 Fifth Edition)
Tekniske spesifikasjoner
| Beholderarkitektur | Hierarkisk tekstoppmerkingsspråk med egendefinerte semantiske tagger og attributter |
| Komprimering | Gzip og Deflate gir 85 til 92 % komprimering av ordrike avslutningstagger |
| Bytterekkefølge | UTF-8-/UTF-16-tegnstrøm bestemt av kodingsattributtet i XML-deklarasjonen |
| Fargerom | Ikke relevant |
| Kanaler og struktur | Elementer (<tag>), attributter (attr="val"), CDATA-blokker, behandlingsinstruksjoner |
| Maks. dimensjoner | Ubegrenset hierarkisk trestruktur |
| Gjennomsiktighet | Ikke relevant |
| Strømming og progressiv visning | SAX (Simple API for XML) og StAX-parsere muliggjør minneeffektiv strømlesing |
Teknisk sammenligningsmatrise: XML sammenlignet med konkurrenter
| Teknisk attributt | XML (Gjeldende) | JSON | YAML | Protocol Buffers |
|---|---|---|---|---|
| Ordrikdom | Høy (sluttagger og attributtsyntaks) | Lav (kompakt nøkkel-verdi-format) | Lav (innrykkbasert) | Ultralav (binær serialisering) |
| Skjemavalidering | Modne XSD- og DTD-standarder med kompilatorhåndheving | JSON Schema (valgfritt) | JSON Schema / Yaml-skjemaer | Strenge .proto-skjemadefinisjoner |
| Navnerom | Innebygd støtte for XML-navnerom (xmlns) | Ingen innebygd navneromsmekanisme | Ingen innebygd navneromsmekanisme | Pakkedeklarasjoner |
| Transformasjoner | XSLT-deklarative transformasjonspipeliner | Egendefinert kode / jq-skript | Egendefinert kode | Egendefinert kode |
Vanlige korrupsjonsmoduser og heksadesimal gjenopprettingsveiledning
XML-tolkningsfeil: tagger stemmer ikke overens, eller en entitet er ikke definert.
Underliggende årsak: Uescapede reserverte tegn (som '&', '<' eller '>') eller uoverensstemmelse mellom åpnings- og sluttagger.
Utbedring: Erstatt '&' med '&', '<' med '<', '>' med '>', eller pakk vilkårlig tekst inn i '<![CDATA[ ... ]]>'-blokker.
Sikkerhetsanalyse og angrepsvektorer mot parsere
XML-parsere har historisk sett vært en av de mest angrepne komponentene i bedriftsdatabehandling på grunn av kraftige DTD- og entitetsutvidelsesmuligheter.
Kjente angrepsvektorer
- XML External Entity (XXE): Ondsinnet DOCTYPE som refererer til lokale serverfiler ('file:///etc/passwd') eller interne nettverksendepunkter.
- Billion Laughs Attack (XML-bombe): Nestede entitetsdeklarasjoner som utvides eksponentielt i minnet for å forårsake tjenestenekt.
- XPath Injection: Uvaliderte brukerinndata som tillater uautorisert spørring av XML-databaser.
Anbefalte sikkerhetstiltak: Deaktiver alltid ekstern DTD-oppløsning og ekstern enhetsbehandling (sett 'disallow-doctype-decl' til true) i XML-parsere.
Historisk opprinnelse og milepæler
Viktige fordeler
- Streng skjemavalidering ved bruk av XSD (XML Schema Definition) eller DTD sikrer høy dataintegritet.
- Navnerom (xmlns) forhindrer kollisjoner mellom elementnavn i komplekse dokumenter med flere kilder.
- Kraftige verktøykjeder for spørring og transformasjon (XPath, XSLT, XQuery).
Tekniske begrensninger og ulemper
- Ekstremt ordrikt: sluttagger gjentar elementnavn, noe som skaper store filstørrelser og høyt båndbreddeforbruk.
- DOM-parsing bygger store, minnekrevende objektrær.
- Sårbart for XML External Entity (XXE) og sikkerhetssårbarheter knyttet til entitetsutvidelse.
Interessante tekniske fakta
- XML er en forenklet delmengde av SGML (Standard Generalized Markup Language), utformet for å fungere sømløst over World Wide Web.
- Moderne kontordokumenter (.docx, .xlsx), vektorgrafikk (.svg) og RSS-strømmer er alle spesialiserte XML-dialekter.
- Det klassiske 'Billion Laughs'-angrepet (tjenestenektangrep) bruker bare 1 kilobyte med nøstede XML-entiteter (lol1 som refererer til ti lol0-er, opp til lol9) for å utvide seg eksponentielt til 3 gigabyte med minne ved parsing.
Ofte stilte tekniske spørsmål
Hva er forskjellen mellom velformet og gyldig XML?
'Velformet' XML følger de grunnleggende syntaksreglene (matchende tagger, hermetegn rundt attributter, enkelt rotelement). 'Gyldig' XML er både velformet OG følger strengt en ekstern skjemadefinisjon (XSD eller DTD).
Hvorfor erstattet JSON XML for de fleste nett-API-er?
JSON kartlegger direkte til opprinnelige JavaScript- og programmeringsspråkdatastrukturer (hash-tabeller og matriser) med mye mindre standardkode (boilerplate), raskere parsing og mindre nettverkspakke.
Hva er en sårbarhet for eksterne XML-entiteter (XXE)?
En XXE-sårbarhet oppstår når en XML-parser behandler et utroverdig dokument med en aktivert ekstern dokumenttype-definisjon (DTD). Angripere kan definere entiteter som peker på lokale serverfiler (som systemkonfigurasjoner) eller interne nettverks-URL-er, noe som får serveren til å lese og avsløre konfidensielle data.