تهيئة XML (.xml)
توصية قياسيلغة الترميز القابلة للتوسيع (XML) هي لغة ترميز متعددة الاستخدامات تحدد مجموعة من القواعد لترميز المستندات بتنسيق مقروء للبشر وقابل للقراءة الآلية.
ضغط XML عبر الإنترنت
خاص - لا تغادر الملفات جهازك أبدًا
فحص البيانات الوصفية
تتعرف أنظمة التشغيل ومحللات الملفات على ملفات XML من خلال فحص تسلسل البايت الثنائي البادئ:
توقيع رأس الملف على مستوى البايت (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 (واجهة XML البسيطة) وStAX قراءة التدفق بكفاءة في استخدام الذاكرة |
مصفوفة المقارنة التقنية: XML مقابل المنافسين
| السمة التقنية | XML (الحالي) | JSON | YAML | Protocol Buffers |
|---|---|---|---|---|
| الإسهاب | مرتفع (بسبب وسوم الإغلاق وبنية السمات) | منخفض (تنسيق مفتاح-قيمة مدمج) | منخفض (يعتمد على المسافة البادئة) | منخفض للغاية (تسلسل ثنائي) |
| التحقق من صحة المخطط | معايير XSD وDTD راسخة، ويمكن للمترجم فرض الالتزام بها | مخطط JSON (اختياري) | مخطط JSON أو مخططات YAML | تعريفات مخطط .proto صارمة |
| مساحات الأسماء | دعم مساحات أسماء XML الأصلية (xmlns) | لا توجد آلية أصلية لمساحات الأسماء | لا توجد آلية أصلية لمساحات الأسماء | إعلانات الحزم |
| التحويلات | خطوط تحويل XSLT التصريحية | رمز مخصص / نصوص jq البرمجية | رمز مخصص | رمز مخصص |
أنماط التلف الشائعة ودليل الاسترداد بالنظام الست عشري
خطأ في تحليل XML: علامة غير متطابقة أو كيان غير معرّف.
السبب الجذري: أحرف محجوزة غير مُهرّبة (مثل '&' أو '<' أو '>') أو عدم تطابق الأحرف بين علامات الفتح والإغلاق.
الاسترداد: استبدال '&' بـ '&'، و'<' بـ '<'، و'>' بـ '>'، أو تغليف أي نص داخل كتل '<![CDATA[ ... ]]>'.
تحليل الأمان ومتجهات الهجوم على المحلّل
كثيرًا ما استُهدفت محللات XML في بيئات الحوسبة المؤسسية، بسبب قدراتها القوية على معالجة DTD وتوسيع الكيانات.
ناقلات الهجوم المعروفة
- الكيان الخارجي لـ XML (XXE): تعليمة DOCTYPE خبيثة تشير إلى ملفات على الخادم المحلي (مثل file:///etc/passwd) أو إلى وجهات على الشبكة الداخلية.
- هجوم «مليار ضحكة» (قنبلة XML): تعريفات كيانات متداخلة تتوسع أُسّيًا في الذاكرة، ما يؤدي إلى حجب الخدمة.
- حقن XPath: إدخال بيانات المستخدم دون تنقيتها، بما يتيح الاستعلام غير المصرح به من قواعد بيانات XML.
أفضل الممارسات الدفاعية: عطّل دائمًا حلّ DTD الخارجية ومعالجة الكيانات الخارجية في محللات XML (واجعل disallow-doctype-decl مساويًا لـ true).
الأصول التاريخية والمحطات الرئيسية
المزايا الرئيسية والإيجابيات
- يضمن التحقق الدقيق من المخطط باستخدام XSD (تعريف مخطط XML) أو DTD سلامة البيانات.
- تمنع مساحات الأسماء (xmlns) تضارب أسماء العناصر في المستندات المعقدة ذات المصادر المتعددة.
- أدوات استعلام وتحويل قوية (XPath وXSLT وXQuery).
القيود الفنية والسلبيات
- مطوّل جدًا: تكرر وسوم الإغلاق أسماء العناصر، فتزداد أحجام الملفات واستهلاك النطاق الترددي.
- يبني محلل DOM أشجارًا كبيرة من الكائنات تستهلك قدرًا كبيرًا من الذاكرة.
- عرضة لثغرات الأمان المتعلقة بالكيانات الخارجية لـ XML (XXE) وتوسيع الكيانات.
معلومات تقنية طريفة
- XML مجموعة فرعية مبسطة من SGML (لغة الترميز العامة القياسية)، صُممت لتعمل بسلاسة عبر شبكة الويب العالمية.
- مستندات البرامج المكتبية الحديثة (.docx و.xlsx) والصور المتجهة (.svg) وخلاصات RSS كلها صيغ متخصصة مبنية على XML.
- يحتاج هجوم «مليار ضحكة» الكلاسيكي إلى كيلوبايت واحد فقط من كيانات XML المتداخلة (حيث يشير lol1 إلى عشرة عناصر lol0، ويتواصل التسلسل حتى lol9) ليتضخم عند التحليل أُسّيًا ويستهلك 3 جيجابايت من الذاكرة.
الأسئلة التقنية المتكررة
ما الفرق بين XML حسن التكوين وXML الصالح؟
يستوفي XML «حسن التكوين» قواعد الصياغة الأساسية، مثل تطابق الوسوم، ووضع السمات بين علامتي اقتباس، ووجود عنصر جذر واحد. أما XML «الصالح» فيستوفي هذه القواعد ويلتزم أيضًا بمخطط خارجي مثل XSD أو DTD.
لماذا استبدلت JSON لغة XML لمعظم واجهات برمجة تطبيقات الويب؟
تطابق JSON مباشرةً هياكل البيانات الأصلية في JavaScript ولغات البرمجة الأخرى، مثل خرائط المفاتيح والمصفوفات. كما يحتاج إلى تعليمات تمهيدية أقل، ويُحلَّل أسرع، وينتج بيانات أصغر عند نقلها عبر الشبكة.
ما هي ثغرة الكيان الخارجي لـ XML (XXE)؟
تحدث ثغرة XXE عندما يعالج محلل XML مستندًا غير موثوق به يحتوي على تعريف نوع مستند خارجي (DTD) ممكّن. يمكن للمهاجمين تعريف كيانات تشير إلى ملفات الخادم المحلي (مثل تكوينات النظام) أو عناوين URL الداخلية للشبكة، مما يتسبب في قراءة الخادم للبيانات السرية والكشف عنها.