Konfigurace XML (.xml)
W3C StandardníExtensible Markup Language (XML) je všestranný značkovací jazyk, který definuje sadu pravidel pro kódování dokumentů ve formátu, který je srozumitelný pro lidi i stroje.
Komprese XML online
Soukromě - soubory nikdy neopustí vaše zařízení
Kontrola a metadata
Operační systémy a analyzátory souborů identifikují soubory XML kontrolou počáteční binární sekvence bajtů:
Podpis hlavičky na úrovni bajtů (Magic Bytes)
Operační systémy a analyzátory souborů identifikují soubory XML kontrolou počáteční binární sekvence bajtů:
HEXADECIMÁLNÍ PODPIS (POSUN 0):
3C 3F 78 6DASCII REPREZENTACE: <?xm
Standardizace: W3C Recommendation (XML 1.0 Fifth Edition)
Technické specifikace
| Architektura kontejneru | Hierarchický textový značkovací jazyk s vlastními sémantickými značkami a atributy |
| Komprese | Gzip / Deflate dokáže podrobné uzavírací značky komprimovat o 85% až 92%. |
| Pořadí bajtů | Proud znaků UTF-8 nebo UTF-16 určený atributem kódování v deklaraci XML |
| Barevné prostory | Nevztahuje se |
| Kanály a struktura | Prvky (<tag>), atributy (attr="val"), bloky CDATA a instrukce pro zpracování |
| Max. rozměry | Neomezená hierarchická stromová struktura |
| Průhlednost | Nevztahuje se |
| Streamování a progresivní načítání | Analyzátory SAX (Simple API for XML) a StAX umožňují čtení streamu s nízkými nároky na paměť |
Technická srovnávací matice: XML vs konkurence
| Technický atribut | XML (Aktuální) | JSON | YAML | Protocol Buffers |
|---|---|---|---|---|
| Rozvláčnost | Vysoká (uzavírací značky a syntaxe atributů) | Nízká (kompaktní formát klíč-hodnota) | Nízká (založená na odsazení) | Extrémně nízká (binární serializace) |
| Validace schématu | Vyzrálé standardy XSD a DTD vynucované překladačem | JSON Schema (volitelné) | JSON Schema / schémata YAML | Přísné definice schématu .proto |
| Jmenné prostory | Nativní podpora jmenných prostorů XML (xmlns) | Žádný nativní mechanizmus jmenných prostorů | Žádný nativní mechanizmus jmenných prostorů | Deklarace balíčků |
| Transformace | Deklarativní transformační kanály XSLT | Vlastní kód / skripty jq | Vlastní kód | Vlastní kód |
Běžné režimy poškození a příručka pro obnovení v hex
Chyba při parsování XML: nesprávně uzavřená značka nebo nedefinovaná entita.
Hlavní příčina: Neošetřené rezervované znaky (jako '&', '<' nebo '>') nebo neshoda velkých a malých písmen mezi otevírací a uzavírací značkou.
Obnovení: Nahraďte '&' řetězcem '&', '<' řetězcem '<' a '>' řetězcem '>', nebo zabalte libovolný text do bloků '<![CDATA[ ... ]]>'.
Bezpečnostní analýza a vektory útoků na parser
Analyzátory XML byly historicky jednou z nejčastěji napadaných součástí v podnikovém výpočetním prostředí kvůli silným možnostem DTD a expanze entit.
Známé vektory útoků
- XML External Entity (XXE): Zlomyslný prvek DOCTYPE odkazující na soubory lokálního serveru ('file:///etc/passwd') nebo koncové body vnitřní sítě.
- Billion Laughs Attack (XML Bomb): Vnořené deklarace entit, které se v paměti exponenciálně rozbalují a způsobují odepření služby.
- XPath Injection: Neošetřené uživatelské vstupy umožňující neoprávněné dotazování databází XML.
Doporučené bezpečnostní postupy: V analyzátorech XML vždy vypněte překlad externích DTD a zpracování externích entit (nastavte vlastnost 'disallow-doctype-decl' na hodnotu true).
Historický vývoj a milníky
Klíčové výhody a přednosti
- Přísná validace schématu pomocí XSD (XML Schema Definition) nebo DTD zajišťuje vysokou integritu dat.
- Jmenné prostory (xmlns) zabraňují kolizím názvů prvků ve složitých dokumentech z více zdrojů.
- Výkonné sady nástrojů pro dotazování a transformace (XPath, XSLT, XQuery).
Technická omezení a nevýhody
- Extrémně rozvláčné: uzavírací značky opakují názvy prvků, což vytváří velké velikosti souborů a vysokou spotřebu šířky pásma.
- Parsování DOM vytváří velké objektové stromy náročné na paměť.
- Náchylnost k bezpečnostním zranitelnostem XML External Entity (XXE) a expanze entit.
Zajímavé technické drobnosti
- XML je zjednodušenou podmnožinou jazyka SGML (Standard Generalized Markup Language), navrženou pro bezproblémové fungování na celosvětové síti World Wide Web.
- Moderní kancelářské dokumenty (.docx, .xlsx), vektorové obrázky (.svg) a kanály RSS jsou specializovanými dialekty XML.
- Klasický útok typu odepření služby zvaný „Billion Laughs" využívá pouhý 1 kilobajt vnořených entit XML (kde lol1 odkazuje na deset entit lol0 až po lol9), které se při parsování exponenciálně rozbalí na 3 gigabajty v paměti.
Často kladené technické otázky
Jaký je rozdíl mezi dobře formátovaným a validním XML?
'Dobře formátované' XML dodržuje základní pravidla syntaxe (odpovídající značky, uvozovky kolem atributů, jediný kořenový prvek). 'Validní' XML je dobře formátované A PŘESNĚ dodržuje definici externího schématu (XSD nebo DTD).
Proč JSON nahradil XML u většiny webových rozhraní API?
JSON se mapuje přímo na nativní datové struktury JavaScriptu a programovacích jazyků (hešovací tabulky a pole) s mnohem menším množstvím pomocného kódu, rychlejším parsováním a menšími objemy přenášenými po síti.
Co je to zranitelnost XML External Entity (XXE)?
Zranitelnost XXE nastává, když analyzátor XML zpracovává nedůvěryhodný dokument s povolenou externí definicí typu dokumentu (DTD). Útočníci mohou definovat entity směřující na lokální soubory serveru (jako jsou systémové konfigurace) nebo adresy URL ve vnitřní síti, což způsobí, že server přečte a prozradí důvěrná data.