XML Yapılandırması (.xml)
W3C StandartGenişletilebilir İşaretleme Dili (XML), belgeleri hem insanların hem de makinelerin okuyabileceği biçimde kodlamaya yönelik kuralları tanımlayan çok yönlü bir işaretleme dilidir.
XML dosyasını çevrimiçi sıkıştır
Özel - dosyalar cihazınızdan asla ayrılmaz
İncele ve Meta Veriler
İşletim sistemleri ve dosya çözümleyicileri, XML dosyalarını başlangıçtaki ikili sihirli bayt dizisini inceleyerek tanımlar:
Bayt düzeyinde başlık imzası (sihirli baytlar)
İşletim sistemleri ve dosya çözümleyicileri, XML dosyalarını başlangıçtaki ikili sihirli bayt dizisini inceleyerek tanımlar:
HEX İMZASI (OFSET 0):
3C 3F 78 6DASCII GÖSTERİMİ: <?xm
Standartlaştırma: W3C Önerisi (XML 1.0 Beşinci Sürüm)
Teknik Özellikler
| Kapsayıcı mimarisi | Özel anlamsal etiketler ve öznitelikler içeren hiyerarşik metin biçimlendirme dili |
| Sıkıştırma | Gzip / Deflate, kapanış etiketleri sıkça tekrarlandığı için metin boyutunu %85 ila %92 azaltabilir. |
| Bayt Düzeni (Endianness) | XML bildirimindeki kodlama özniteliğinin belirlediği UTF-8 veya UTF-16 karakter akışı |
| Renk Uzayları | Uygulanamaz |
| Kanallar ve Yapı | Öğeler (<tag>), öznitelikler (attr="val"), CDATA blokları ve işleme yönergeleri |
| Maksimum Boyutlar | Hiyerarşik ağaç yapısının boyutu için biçim düzeyinde bir sınır yoktur. |
| Şeffaflık | Uygulanamaz |
| Akış ve Aşamalı İşleme | SAX (Simple API for XML) ve StAX ayrıştırıcıları akışın bellek verimli biçimde okunmasını sağlar. |
Teknik karşılaştırma matrisi: XML ve rakipleri
| Teknik Nitelik | XML (Güncel) | JSON | YAML | Protocol Buffers |
|---|---|---|---|---|
| Ayrıntı Düzeyi | Yüksek (kapanış etiketleri ve öznitelik sözdizimi) | Düşük (kompakt anahtar-değer biçimi) | Düşük (girinti tabanlı) | Çok düşük (ikili serileştirme) |
| Şema Doğrulama | Derleyici zorlamasına sahip olgun XSD ve DTD standartları | JSON Schema (isteğe bağlı) | JSON Schema / YAML şemaları | Katı .proto şema tanımları |
| Ad Alanları | Yerel XML ad alanları (xmlns) desteği | Yerel ad alanı mekanizması yok | Yerel ad alanı mekanizması yok | Paket bildirimleri |
| Dönüşümler | XSLT bildirimli dönüşüm işlem hatları | Özel kod / jq komut dosyaları | Özel kod | Özel kod |
Yaygın Bozulma Modları ve Hex Kurtarma Kılavuzu
XML Ayrıştırma Hatası: uyuşmayan etiket veya tanımlanmamış varlık başvurusu.
Kök Neden: Kaçış karakteri kullanılmamış ayrılmış karakterler ('&', '<' veya '>') veya açılış ve kapanış etiketleri arasında büyük/küçük harf uyuşmazlığı.
Kurtarma: '&' karakterini '&' ile, '<' karakterini '<' ile ve '>' karakterini '>' ile değiştir. Ya da istediğin metni '<![CDATA[ ... ]]>' bloklarının içine al.
Güvenlik Analizi ve Ayrıştırıcı Saldırı Vektörleri
XML ayrıştırıcıları, güçlü DTD ve varlık genişletme yetenekleri nedeniyle kurumsal bilişimde tarihsel olarak en çok saldırıya uğrayan bileşenlerden biri olmuştur.
Bilinen Saldırı Vektörleri
- XML Dış Varlık (XXE): Yerel sunucu dosyalarına ('file:///etc/passwd') veya dahili ağ uç noktalarına başvuran kötü amaçlı DOCTYPE.
- Milyar Gülüş Saldırısı (XML Bombası): Hizmet engelleme maksadıyla bellekte üstel olarak genişleyen iç içe varlık bildirimleri.
- XPath Enjeksiyonu: XML veritabanlarının yetkisiz sorgulanmasına izin veren doğrulanmamış kullanıcı girdileri.
Savunmaya yönelik en iyi uygulamalar: XML ayrıştırıcılarında harici DTD çözümlemesini ve harici varlık işlemeyi her zaman devre dışı bırak; 'disallow-doctype-decl' özelliğini true olarak ayarla.
Tarihsel kökenler ve önemli dönüm noktaları
Temel Avantajlar ve Artılar
- XSD (XML Şeması Tanımı) veya DTD kullanarak titiz şema doğrulama, katı veri bütünlüğü sağlar.
- Ad alanları (xmlns), karmaşık çok kaynaklı belgelerde öğe adı çakışmalarını önler.
- Güçlü sorgulama ve dönüştürme araç zincirleri (XPath, XSLT, XQuery).
Teknik Kısıtlamalar ve Eksiler
- Son derece ayrıntılı: kapanış etiketleri öğe adlarını tekrarlayarak büyük dosya boyutlarına ve yüksek bant genişliği tüketimine neden olur.
- DOM ayrıştırma, bellek yoğun büyük nesne ağaçları oluşturur.
- XML Dış Varlık (XXE) ve varlık genişletme güvenlik açıklarına karşı hassastır.
İlginç Teknik Bilgiler
- XML, World Wide Web üzerinden sorunsuz bir şekilde çalışmak üzere tasarlanmış, SGML'nin (Standart Genelleştirilmiş Biçimlendirme Dili) basitleştirilmiş bir alt kümesidir.
- Modern ofis belgeleri (.docx, .xlsx), vektör görselleri (.svg) ve RSS akışlarının tümü özelleştirilmiş XML diyalektleridir.
- Klasik 'Milyar Gülüş' hizmet engelleme saldırısı, iç içe XML varlıklarından oluşan yalnızca 1 kilobaytlık bir girdiyle çalışır. lol1, on lol0'a başvurur ve lol9'a kadar bu şekilde katlanarak genişleyen girdi ayrıştırıldığında 3 gigabayt bellek tüketir.
Sıkça Sorulan Teknik Sorular
İyi biçimlendirilmiş (well-formed) ve geçerli (valid) XML arasındaki fark nedir?
'İyi biçimlendirilmiş' XML, temel sözdizimi kurallarına uyar (eşleşen etiketler, tırnak içinde öznitelikler, tek kök öğe). 'Geçerli' XML ise hem iyi biçimlendirilmiştir HEM DE harici bir şema tanımına (XSD veya DTD) katı bir şekilde uyar.
JSON, çoğu web API'si için neden XML'in yerini aldı?
JSON; çok daha az ek kod, daha hızlı ayrıştırma ve ağda daha az veri aktarımıyla JavaScript ve diğer programlama dillerindeki veri yapılarına (karma tablolar ve diziler) doğrudan eşlenir.
XML Dış Varlık (XXE) açığı nedir?
XXE açığı, bir XML ayrıştırıcısının harici Belge Türü Tanımı (DTD) etkinleştirilmiş güvenilmeyen bir belgeyi işlemesi durumunda oluşur. Saldırganlar, yerel sunucu dosyalarına (sistem yapılandırmaları gibi) veya dahili ağ URL'lerine işaret eden varlıklar tanımlayarak sunucunun gizli verileri okumasına ve ifşa etmesine neden olabilir.