XML-konfig (.xml)
W3C StandardExtensible Markup Language (XML) är ett mångsidigt uppmärkningsspråk som definierar en uppsättning regler för att koda dokument i ett format som är både läsbart för människor och maskiner.
Komprimera XML online
Privat - filer lämnar aldrig din enhet
Granska och metadata
Operativsystem och filanalysverktyg identifierar XML-filer genom att granska den inledande sekvensen av binära byte:
Signatur i filhuvudet på bytenivå (magiska byte)
Operativsystem och filanalysverktyg identifierar XML-filer genom att granska den inledande sekvensen av binära byte:
HEX-SIGNATUR (OFFSET 0):
3C 3F 78 6DASCII-REPRESENTATION: <?xm
Standardisering: W3C Recommendation (XML 1.0 Fifth Edition)
Tekniska specifikationer
| Containerarkitektur | Hierarkiskt textuppmärkningsspråk med anpassade semantiska taggar och attribut |
| Komprimering | Gzip/Deflate ger 85 % - 92 % komprimering av utförliga stängningstaggar |
| Byteordning | UTF-8 / UTF-16 teckenström bestämd av XML-deklarationens kodningsattribut |
| Färgrymder | Ej tillämpligt |
| Kanaler och struktur | Element (<tag>), attribut (attr="val"), CDATA-block, bearbetningsinstruktioner |
| Maximala dimensioner | Obegränsad hierarkisk trädstruktur |
| Transparens | Ej tillämpligt |
| Strömning och progressiv visning | SAX-tolkar (Simple API for XML) och StAX-tolkar möjliggör minneseffektiv strömläsning |
Teknisk jämförelsematris: XML jämfört med konkurrenter
| Tekniskt attribut | XML (Aktuell) | JSON | YAML | Protocol Buffers |
|---|---|---|---|---|
| Ordrikedom | Hög (stängningstaggar och attributsyntax) | Låg (kompakt nyckel-värde-format) | Låg (indenteringsbaserad) | Ultralåg (binär serialisering) |
| Schemavalidering | Mogna XSD- och DTD-standarder med kompileringskontroll | JSON Schema (valfritt) | JSON Schema / YAML-scheman | Strikta .proto-schemadefinitioner |
| Namnrymder | Inbyggt stöd för XML-namnrymder (xmlns) | Ingen inbyggd namnrymdsmekanism | Ingen inbyggd namnrymdsmekanism | Paketdeklarationer |
| Transformationer | XSLT-deklarativa transformationspipelines | Anpassad kod / jq-skript | Anpassad kod | Anpassad kod |
Vanliga skadeorsaker och hex-återställningsguide
XML-tolkningsfel: felaktig tagg eller odefinierad entitet.
Grundorsak: Oescapade reserverade tecken (som ”&”, ”<” eller ”>”) eller skillnad i skiftläge mellan öppnande och stängande taggar.
Återställning: Ersätt '&' med '&', '<' med '<', '>' med '>', eller omslut godtycklig text i blocken '<![CDATA[ ... ]]>'.
Säkerhetsanalys och attackvektorer för tolkar
XML-tolkar har historiskt sett varit en av de mest attackerade komponenterna inom företagsteknologi på grund av kraftfulla DTD- och entitetsexpansionsfunktioner.
Kända attackvektorer
- XML External Entity (XXE): Skadlig DOCTYPE som refererar till lokala serverfiler ('file:///etc/passwd') eller interna nätverksändpunkter.
- Billion Laughs-attack (XML-bomb): Nästlade entitetsdeklarationer som expanderar exponentiellt i minnet för att orsaka överbelastning.
- XPath-injektion: Orensad användarindata som tillåter obehöriga sökfrågor mot XML-databaser.
Rekommenderade skyddsåtgärder: Inaktivera alltid extern DTD-upplösning och extern entitetsbearbetning (sätt egenskapen 'disallow-doctype-decl' till true) i XML-tolkar.
Historiskt ursprung och milstolpar
Viktiga fördelar
- Grundlig schemavalidering med XSD (XML Schema Definition) eller DTD säkerställer strikt dataintegritet.
- Namnrymder (xmlns) förhindrar namnkonflikter för element i komplexa dokument med flera källor.
- Kraftfulla verktyg för frågor och transformationer (XPath, XSLT, XQuery).
Tekniska begränsningar
- Extremt ordrikt: stängningstaggar upprepar elementnamn, vilket skapar stora filer och hög bandbreddsförbrukning.
- DOM-tolkning bygger stora minnesintensiva objektträd.
- Känsligt för säkerhetssårbarheter som XML External Entity (XXE) och entitetsexpansion.
Intressant teknisk kuriosa
- XML är en förenklad delmängd av SGML (Standard Generalized Markup Language), utformad för att fungera sömlöst över World Wide Web.
- Moderna kontorsdokument (.docx, .xlsx), vektorgrafik (.svg) och RSS-flöden är alla specialiserade XML-dialekter.
- Den klassiska överbelastningsattacken 'Billion Laughs' använder endast 1 kilobyte med nästlade XML-entiteter (lol1 som refererar till tio lol0, upp till lol9) för att expandera exponentiellt till 3 gigabyte minne vid tolkning.
Vanliga tekniska frågor
Vad är skillnaden mellan välformad och giltig XML?
'Välformad' XML följer de grundläggande syntaxreglerna (matchande taggar, citattecken runt attribut, ett enda rotelement). 'Giltig' XML är både välformad OCH följer strikt en extern schemadefinition (XSD eller DTD).
Varför ersatte JSON XML för de flesta webb-API:er?
JSON mappar direkt till inbyggda datastrukturer i JavaScript och programmeringsspråk (hash-tabeller och matriser) med mycket mindre överflödig kod, snabbare tolkning och mindre nätverksnyttolaster.
Vad är en sårbarhet för XML External Entity (XXE)?
En XXE-sårbarhet uppstår när en XML-tolk bearbetar ett otillförlitligt dokument med en aktiverad extern DTD (Document Type Definition). Angripare kan definiera entiteter som pekar på lokala serverfiler (såsom systemkonfigurationer) eller interna nätverks-URL:er, vilket gör att servern läser och avslöjar konfidentiella data.