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ů:

Vyberte nebo přetáhněte soubory sem

Soukromě - soubory nikdy neopustí vaše zařízení

nebo vložte Ctrl+V
Záruka ochrany soukromí s nulovým přenosem po síti: 0 bajtů odesláno na externí servery. Veškeré zpracování probíhalo lokálně v sandboxu vašeho prohlížeče.

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 6D

ASCII REPREZENTACE: <?xm

Standardizace: W3C Recommendation (XML 1.0 Fifth Edition)

Technické specifikace

Architektura kontejneruHierarchický textový značkovací jazyk s vlastními sémantickými značkami a atributy
KompreseGzip / 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é prostoryNevztahuje se
Kanály a strukturaPrvky (<tag>), atributy (attr="val"), bloky CDATA a instrukce pro zpracování
Max. rozměryNeomezená hierarchická stromová struktura
PrůhlednostNevztahuje 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ý atributXML (Aktuální)JSONYAMLProtocol Buffers
RozvláčnostVysoká (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ématuVyzrálé standardy XSD a DTD vynucované překladačemJSON Schema (volitelné)JSON Schema / schémata YAMLPřísné definice schématu .proto
Jmenné prostoryNativní podpora jmenných prostorů XML (xmlns)Žádný nativní mechanizmus jmenných prostorůŽádný nativní mechanizmus jmenných prostorůDeklarace balíčků
TransformaceDeklarativní transformační kanály XSLTVlastní kód / skripty jqVlastní kódVlastní 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 '&amp;', '<' řetězcem '&lt;' a '>' řetězcem '&gt;', 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

2008W3C vydává XML 1.0 Fifth Edition, čímž standardizuje moderní podporu mezinárodních znaků.
2000W3C vydává XML Schema 1.0 (XSD) a DOM Level 2, čímž zavádí strukturované typování a událostní architekturu.
1998W3C vydává doporučení XML 1.0 jako zjednodušenou podmnožinu SGML vhodnou pro web.

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.