Konfiguracja XML (.xml)

W3C Standard

Extensible Markup Language (XML) to wszechstronny język znaczników, który definiuje zestaw reguł kodowania dokumentów w formacie czytelnym zarówno dla ludzi, jak i dla maszyn.

Kompresuj XML online

Prywatnie - pliki nigdy nie opuszczają Twojego urządzenia

Inspekcja i metadane

Systemy operacyjne i analizatory plików identyfikują pliki XML, sprawdzając początkową sekwencję bajtów binarnych:

Wybierz lub upuść pliki tutaj

Prywatnie - pliki nigdy nie opuszczają Twojego urządzenia

lub wklej Ctrl+V
Gwarancja prywatności bez przesyłania danych do sieci: 0 bajtów przesłanych na zewnętrzne serwery. Całe przetwarzanie odbyło się lokalnie w piaskownicy przeglądarki.

Podpis nagłówka na poziomie bajtów (Magic Bytes)

Systemy operacyjne i analizatory plików identyfikują pliki XML, sprawdzając początkową sekwencję bajtów binarnych:

PODPIS HEX (OFFSET 0):

3C 3F 78 6D

REPREZENTACJA ASCII: <?xm

Normalizacja: W3C Recommendation (XML 1.0 Fifth Edition)

Specyfikacja techniczna

Architektura konteneraHierarchiczny tekstowy język znaczników z niestandardowymi znacznikami semantycznymi i atrybutami
KompresjaGzip / Deflate osiąga kompresję na poziomie 85%-92% w przypadku rozwlekłych znaczników zamykających
Kolejność bajtów (Endianness)Strumień znaków UTF-8 / UTF-16 określony przez atrybut kodowania w deklaracji XML
Przestrzenie kolorówNie dotyczy
Kanały i strukturaElementy (<tag>), atrybuty (attr="val"), bloki CDATA, instrukcje przetwarzania
Maks. wymiaryNieograniczona hierarchiczna struktura drzewa
PrzezroczystośćNie dotyczy
Streaming i progresywne ładowanieParsery SAX (Simple API for XML) i StAX umożliwiają odczyt strumieniowy o niskim zużyciu pamięci

Techniczna macierz porównawcza: XML a konkurencja

Atrybut technicznyXML (Bieżący)JSONYAMLProtocol Buffers
RozwlekłośćWysoka (znaczniki zamykające i składnia atrybutów)Niska (kompaktowy format klucz-wartość)Niska (oparta na wcięciach)Bardzo mała (serializacja binarna)
Walidacja schematuDojrzałe standardy XSD i DTD z wymuszaniem przez kompilatorJSON Schema (opcjonalnie)JSON Schema / schematy YAMLŚcisłe definicje schematów .proto
Przestrzenie nazwNatywna obsługa przestrzeni nazw XML (xmlns)Brak natywnego mechanizmu przestrzeni nazwBrak natywnego mechanizmu przestrzeni nazwDeklaracje pakietów
TransformacjeDeklaratywne potoki transformacji XSLTWłasny kod / skrypty jqWłasny kodWłasny kod

Typowe tryby uszkodzeń i przewodnik odzyskiwania szesnastkowego

Błąd analizy XML: niezgodny znacznik lub niezdefiniowana encja.

Główna przyczyna: Nieucieczone znaki zastrzeżone (takie jak „&”, „<” lub „>”) albo różnica w wielkości liter między znacznikiem otwierającym a zamykającym.

Odzyskiwanie: Zastąp „&” przez „&amp;”, „<” przez „&lt;”, „>” przez „&gt;” lub umieść dowolny tekst w blokach „<![CDATA[ ... ]]>”.

Analiza bezpieczeństwa i wektory ataku na parser

Parsery XML od dawna należą do najczęściej atakowanych komponentów w systemach informatycznych przedsiębiorstw ze względu na zaawansowane możliwości DTD i rozwijania encji.

Znane wektory ataku

  • XML External Entity (XXE): Złośliwa deklaracja DOCTYPE odwołująca się do lokalnych plików serwera („file:///etc/passwd") lub wewnętrznych punktów końcowych sieci.
  • Atak Billion Laughs (XML Bomb): Zagnieżdżone deklaracje encji rozwijające się wykładniczo w pamięci, powodujące odmowę usługi.
  • Wstrzykiwanie XPath (XPath Injection): Nieoczyszczone dane wejściowe użytkownika pozwalające na nieautoryzowane zapytania do baz danych XML.

Najlepsze praktyki obronne: W parserach XML zawsze wyłączaj rozwiązywanie zewnętrznych DTD i przetwarzanie zewnętrznych encji (ustaw opcję 'disallow-doctype-decl' na true).

Pochodzenie historyczne i kamienie milowe

2008W3C publikuje XML 1.0 piąte wydanie (Fifth Edition), standardyzując nowoczesną obsługę międzynarodowych znaków.
2000W3C publikuje XML Schema 1.0 (XSD) oraz DOM Level 2, ustanawiając ustrukturyzowane typowanie i architektury zdarzeń.
1998W3C publikuje rekomendację XML 1.0 jako uproszczony, przyjazny dla sieci podzbiór SGML.

Główne zalety

  • Rygorystyczna walidacja schematu przy użyciu XSD (XML Schema Definition) lub DTD zapewnia ścisłą integralność danych.
  • Przestrzenie nazw (xmlns) zapobiegają kolizjom nazw elementów w złożonych dokumentach pochodzących z wielu źródeł.
  • Potężne narzędzia do zapytań i transformacji (XPath, XSLT, XQuery).

Ograniczenia techniczne i wady

  • Bardzo rozwlekły format: znaczniki zamykające powtarzają nazwy elementów, co zwiększa rozmiar plików i zużycie pasma.
  • Parsowanie DOM buduje duże, obciążające pamięć drzewa obiektów.
  • Podatny na luki bezpieczeństwa typu XML External Entity (XXE) oraz ekspansję encji.

Ciekawe informacje techniczne

  • XML jest uproszczonym podzbiorem SGML (Standard Generalized Markup Language), zaprojektowanym z myślą o bezproblemowej współpracy w sieci World Wide Web.
  • Nowoczesne dokumenty biurowe (.docx, .xlsx), grafika wektorowa (.svg) oraz kanały RSS to wyspecjalizowane dialekty XML.
  • Klasyczny atak typu „odmowa usługi” (Denial of Service), znany jako „Billion Laughs”, wykorzystuje zaledwie 1 kilobajt zagnieżdżonych encji XML (w których lol1 odwołuje się do dziesięciu lol0, aż do lol9), aby podczas parsowania rozwinąć się wykładniczo i zająć 3 gigabajty pamięci.

Często zadawane pytania techniczne

Jaka jest różnica pomiędzy dobrze sformułowanym a poprawnym (valid) dokumentem XML?

„Dobrze sformułowany" (well-formed) XML przestrzega podstawowych reguł składniowych (pasujące znaczniki, cudzysłowy wokół atrybutów, pojedynczy element główny). „Poprawny" (valid) XML jest zarówno dobrze sformułowany, JAK I ściśle przestrzega definicji zewnętrznego schematu (XSD lub DTD).

Dlaczego JSON zastąpił XML w większości interfejsów API sieciowych?

JSON odwzorowuje się bezpośrednio na natywne struktury danych w JavaScripcie i innych językach programowania (mapy haszujące i tablice), wymaga znacznie mniej kodu pomocniczego, zapewnia szybsze parsowanie i mniejsze ładunki sieciowe.

Co to jest podatność XML External Entity (XXE)?

Podatność XXE występuje, gdy parser XML przetwarza niezaufany dokument z włączoną obsługą zewnętrznej definicji typu dokumentu (DTD). Atakujący mogą zdefiniować encje wskazujące na lokalne pliki serwera (takie jak konfiguracje systemu) lub wewnętrzne adresy URL sieci, co zmusza serwer do odczytania i ujawnienia poufnych danych.