Конфігурація XML (.xml)

Рекомендація Стандарт

Розширювана мова розмітки (XML): це універсальна мова розмітки, яка визначає набір правил для кодування документів у форматі, зручному для читання як людиною, так і машиною.

Стиснути XML онлайн

Приватно - файли ніколи не залишають ваш пристрій

Аналіз та метадані

Операційні системи та аналізатори файлів ідентифікують файли XML, перевіряючи початкову послідовність бінарних байтів:

Виберіть або перетягніть файли сюди

Приватно - файли ніколи не залишають ваш пристрій

або вставте Ctrl+V
Гарантія конфіденційності без передавання даних мережею: Жодного байта не передано на зовнішні сервери. Уся обробка відбувалася локально в ізольованому середовищі браузера.

Сигнатура заголовка на байтовому рівні (Magic Bytes)

Операційні системи та аналізатори файлів ідентифікують файли XML, перевіряючи початкову послідовність бінарних байтів:

ШІСТНАДЦЯТКОВА СИГНАТУРА (ЗСУВ 0):

3C 3F 78 6D

ПОДАННЯ В ASCII: <?xm

Стандартизація: Рекомендація W3C (XML 1.0, п'яте видання)

Технічні характеристики

Архітектура контейнераІєрархічна мова текстової розмітки з власними семантичними тегами та атрибутами
СтисненняGzip / Deflate стискають громіздкі закривні теги на 85-92 %.
Порядок байтів (Endianness)Потік символів UTF-8 / UTF-16, що визначається атрибутом кодування в оголошенні XML
Колірні просториНе застосовується
Канали та структураЕлементи (<tag>), атрибути (attr="val"), блоки CDATA, інструкції обробки
Максимальні розміриНеобмежена ієрархічна структура дерева
ПрозорістьНе застосовується
Потокове та прогресивне завантаженняПарсери SAX (Simple API for XML) і StAX дають змогу читати потік із ефективним використанням пам’яті.

Технічна матриця порівняння: XML проти конкурентів

Технічний атрибутXML (Поточний)JSONYAMLProtocol Buffers
БагатослівністьВисока (закривні теги та синтаксис атрибутів)Низька (компактний формат ключ-значення)Низька (на основі відступів)Дуже низька (бінарна серіалізація)
Перевірка схемУсталені стандарти XSD і DTD, дотримання яких перевіряє компілятор.JSON Schema (необов'язково)Схеми JSON Schema / YamlСуворі визначення схем .proto
Простори іменВбудована підтримка просторів імен XML (xmlns)Немає вбудованого механізму просторів іменНемає вбудованого механізму просторів іменОголошення пакетів
ТрансформаціїДекларативні конвеєри трансформації XSLTВласний код / скрипти jqВласний кодВласний код

Типові режими пошкодження та посібник з відновлення в шістнадцятковому форматі

Помилка аналізу XML: тег не збігається або сутність не визначена.

Першопричина: Неекрановані зарезервовані символи (наприклад, «&», «<» або «>») або невідповідність регістру між початковим і кінцевим тегами.

Відновлення: Замініть «&» на «&amp;», «<» на «&lt;», «>» на «&gt;» або помістіть довільний текст у блоки «<![CDATA[ ... ]]>».

Аналіз безпеки та векторів атак на парсери

Парсери XML історично були одними з компонентів, які найчастіше атакували в корпоративному ІТ-середовищі, через потужні можливості DTD і розгортання сутностей.

Відомі вектори атак

  • Зовнішня сутність XML (XXE): шкідливий DOCTYPE, що посилається на файли локального сервера («file:///etc/passwd») або внутрішні мережеві кінцеві точки.
  • Атака Billion Laughs (XML-бомба): вкладені оголошення сутностей експоненціально розширюються в пам'яті, спричиняючи відмову в обслуговуванні.
  • Ін'єкція XPath: Неочищені вхідні дані користувача, що дозволяють несанкціоноване виконання запитів до баз даних XML.

Рекомендації щодо захисту: Завжди вимикайте пошук зовнішніх DTD та обробку зовнішніх сутностей у парсерах XML (параметру disallow-doctype-decl задайте значення true).

Історичне походження та віхи

2008W3C публікує п'яте видання XML 1.0, стандартизуючи сучасну підтримку міжнародних символів.
2000W3C публікує XML Schema 1.0 (XSD) та DOM Level 2, закладаючи основи структурованої типізації та архітектури подій.
1998W3C публікує Рекомендацію XML 1.0 як спрощену, зручну для інтернету підмножину SGML.

Основні переваги

  • Сувора перевірка схем за допомогою XSD (XML Schema Definition) або DTD гарантує високу цілісність даних.
  • Простори імен (xmlns) запобігають зіткненню імен елементів у складних документах із багатьох джерел.
  • Потужні інструменти для запитів і трансформацій (XPath, XSLT, XQuery).

Технічні обмеження та недоліки

  • XML надмірно багатослівний: закривні теги повторюють назви елементів, збільшуючи розмір файлів і потребу в пропускній здатності мережі.
  • Аналіз DOM будує великі дерева об'єктів, що інтенсивно використовують пам'ять.
  • Схильність до вразливостей безпеки, пов'язаних із зовнішніми сутностями XML (XXE) та розширенням сутностей.

Цікаві технічні факти

  • XML є спрощеною підмножиною SGML (Standard Generalized Markup Language), створеною для безперешкодної роботи у Всесвітній павутині.
  • Сучасні офісні документи (.docx, .xlsx), векторні зображення (.svg) та стрічки RSS є спеціалізованими діалектами XML.
  • Класична атака типу «відмова в обслуговуванні» «Billion Laughs» використовує лише 1 кілобайт вкладених XML-сутностей (lol1, що посилається на десять lol0, і так до lol9), які під час синтаксичного аналізу експоненціально розгортаються до 3 гігабайтів пам'яті.

Поширені технічні запитання

У чому різниця між добре сформованим і дійсним XML?

«Добре сформований» XML дотримується базових правил синтаксису (парні теги, лапки навколо атрибутів, єдиний кореневий елемент). «Валідний» XML є добре сформованим І суворо відповідає визначенню зовнішньої схеми (XSD або DTD).

Чому JSON замінив XML для більшості веб-API?

JSON безпосередньо відповідає структурам даних JavaScript та інших мов програмування (хеш-таблицям і масивам) і потребує значно менше шаблонного коду, швидше розбирається та передає менші обсяги даних.

Що таке вразливість зовнішньої сутності XML (XXE)?

Вразливість XXE виникає, коли аналізатор XML обробляє неперевірений документ із активованим зовнішнім визначенням типу документа (DTD). Зловмисники можуть визначати сутності, які вказують на локальні файли сервера (наприклад, конфігурації системи) або внутрішні URL-адреси мережі, змушуючи сервер читати та розголошувати конфіденційні дані.