Konfigurasi XML (.xml)
Rekomendasi StandarExtensible Markup Language (XML) adalah bahasa markup serbaguna yang menetapkan aturan untuk menyandikan dokumen dalam format yang dapat dibaca manusia maupun mesin.
Kompres XML Secara Daring
Privat - file tidak pernah meninggalkan perangkat Anda
Pemeriksaan & Metadata
Sistem operasi dan penganalisis file mengenali file XML dengan memeriksa urutan byte biner di bagian awal:
Tanda Tangan Header per Byte (Byte Penanda)
Sistem operasi dan penganalisis file mengenali file XML dengan memeriksa urutan byte biner di bagian awal:
TANDA TANGAN HEX (OFFSET 0):
3C 3F 78 6DREPRESENTASI ASCII: <?xm
Standardisasi: Rekomendasi W3C (XML 1.0 Edisi Kelima)
Spesifikasi Teknis
| Arsitektur Kontainer | Bahasa markup teks hierarkis dengan tag semantik dan atribut kustom |
| Kompresi | Gzip / Deflate mencapai kompresi 85%-92% pada tag penutup yang bertele-tele |
| Urutan Byte | Aliran karakter UTF-8 / UTF-16 yang pengodeannya ditentukan oleh atribut encoding pada deklarasi XML |
| Ruang Warna | Tidak berlaku |
| Saluran & Struktur | Elemen (<tag>), atribut (attr="val"), blok CDATA, instruksi pemrosesan |
| Dimensi Maksimum | Struktur pohon hierarkis tanpa batas |
| Transparansi | Tidak berlaku |
| Streaming & Progresif | Parser SAX (Simple API for XML) dan StAX memungkinkan pembacaan aliran dengan penggunaan memori yang efisien |
Perbandingan Teknis XML dengan Pesaing
| Atribut Teknis | XML (Saat Ini) | JSON | YAML | Protocol Buffers |
|---|---|---|---|---|
| Tingkat kerincian | Tinggi (tag penutup dan sintaksis atribut) | Rendah (format pasangan kunci-nilai yang ringkas) | Rendah (berbasis indentasi) | Sangat rendah (serialisasi biner) |
| Validasi Skema | Standar XSD & DTD yang matang dengan validasi oleh kompiler | JSON Schema (opsional) | JSON Schema / skema YAML | Definisi skema .proto yang ketat |
| Ruang Nama | Dukungan ruang nama XML bawaan (xmlns) | Tidak ada mekanisme ruang nama bawaan | Tidak ada mekanisme ruang nama bawaan | Deklarasi paket |
| Transformasi | Pipeline transformasi deklaratif XSLT | Kode kustom / skrip jq | Kode kustom | Kode kustom |
Pola Kerusakan Umum dan Panduan Pemulihan Hex
Kesalahan penguraian XML: tag tidak cocok atau entitas tidak ditentukan.
Penyebab Utama: Karakter khusus yang tidak di-escape (seperti '&', '<', atau '>') atau ketidakcocokan huruf besar-kecil antara tag pembuka dan penutup.
Pemulihan: Ganti '&' dengan '&', '<' dengan '<', '>' dengan '>', atau bungkus teks apa pun di dalam blok '<![CDATA[ ... ]]>'.
Analisis Keamanan & Vektor Serangan Parser
Parser XML secara historis menjadi salah satu komponen yang paling banyak diserang dalam komputasi perusahaan karena kemampuan DTD dan ekspansi entitas yang kuat.
Vektor Serangan yang Diketahui
- XML External Entity (XXE): DOCTYPE berbahaya yang mereferensikan file server lokal ('file:///etc/passwd') atau titik akhir jaringan internal.
- Serangan Billion Laughs (Bom XML): Deklarasi entitas bersarang yang berekspansi secara eksponensial di dalam memori untuk menyebabkan penolakan layanan.
- Injeksi XPath: Input pengguna yang tidak disanitasi yang memungkinkan kueri database XML yang tidak sah.
Praktik Terbaik Defensif: Selalu nonaktifkan resolusi DTD eksternal dan pemrosesan entitas eksternal (atur fitur 'disallow-doctype-decl' ke nilai true) di parser XML.
Asal-Usul & Tonggak Sejarah
Keunggulan & Kelebihan Utama
- Validasi skema yang ketat menggunakan XSD (XML Schema Definition) atau DTD memastikan integritas data yang kuat.
- Ruang nama (xmlns) mencegah tabrakan nama elemen dalam dokumen multi-sumber yang kompleks.
- Rangkaian alat kueri dan transformasi yang andal (XPath, XSLT, XQuery).
Keterbatasan Teknis & Kekurangan
- Sangat bertele-tele: tag penutup mengulangi nama elemen sehingga ukuran file dan konsumsi bandwidth meningkat.
- Penguraian DOM membangun pohon objek yang membutuhkan banyak memori.
- Rentan terhadap serangan XML External Entity (XXE) dan ekspansi entitas.
Fakta Teknis Menarik
- XML adalah subset SGML (Standard Generalized Markup Language) yang disederhanakan dan dirancang agar berfungsi lancar di World Wide Web.
- Dokumen perkantoran modern (.docx, .xlsx), gambar vektor (.svg), dan umpan RSS semuanya adalah dialek XML khusus.
- Serangan penolakan layanan klasik 'Billion Laughs' hanya menggunakan entitas XML bersarang berukuran 1 kilobyte (lol1 merujuk pada sepuluh entitas lol0, hingga lol9) untuk berkembang secara eksponensial hingga menggunakan 3 gigabyte memori saat diurai.
Pertanyaan Teknis yang Sering Diajukan
Apa perbedaan antara XML yang terbentuk dengan baik (well-formed) dan valid?
XML yang 'terbentuk dengan baik' mengikuti aturan sintaksis dasar (tag yang cocok, tanda kutip di sekitar atribut, satu elemen akar tunggal). XML yang 'valid' adalah XML yang terbentuk dengan baik dan secara ketat mematuhi definisi skema eksternal (XSD atau DTD).
Mengapa JSON menggantikan XML untuk sebagian besar API web?
JSON dipetakan langsung ke struktur data bawaan JavaScript dan bahasa pemrograman lain (peta hash dan array), dengan lebih sedikit kode boilerplate, penguraian lebih cepat, dan muatan jaringan lebih kecil.
Apa itu kerentanan XML External Entity (XXE)?
Kerentanan XXE terjadi ketika parser XML memproses dokumen yang tidak tepercaya dengan Document Type Definition (DTD) eksternal yang diaktifkan. Penyerang dapat menentukan entitas yang mengarah ke file server lokal (seperti konfigurasi sistem) atau URL jaringan internal, sehingga server membaca dan mengungkapkan data rahasia.