XML Yapılandırması (.xml)

W3C Standart

Geniş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:

Dosyaları buraya seç veya bırak

Özel - dosyalar cihazınızdan asla ayrılmaz

veya yapıştır Ctrl+V
Sıfır Ağ Aktarımı Gizlilik Garantisi: Harici sunuculara 0 bayt yüklendi. Tüm işlemler tarayıcındaki korumalı alanda (sandbox) yerel olarak gerçekleştirildi.

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 6D

ASCII 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ırmaGzip / 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 BoyutlarHiyerarşik ağaç yapısının boyutu için biçim düzeyinde bir sınır yoktur.
ŞeffaflıkUygulanamaz
Akış ve Aşamalı İşlemeSAX (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 NitelikXML (Güncel)JSONYAMLProtocol Buffers
Ayrıntı DüzeyiYü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ğrulamaDerleyici 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ğiYerel ad alanı mekanizması yokYerel ad alanı mekanizması yokPaket bildirimleri
DönüşümlerXSLT 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 '&amp;' ile, '<' karakterini '&lt;' ile ve '>' karakterini '&gt;' 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ı

2008W3C, modern uluslararası karakter desteğini standartlaştırarak XML 1.0 Beşinci Sürüm'ü yayınlar.
2000W3C, yapılandırılmış tür belirleme ve olay mimarilerini kurarak XML Schema 1.0 (XSD) ve DOM Level 2'yi yayınlar.
1998W3C, SGML'nin basitleştirilmiş ve web dostu bir alt kümesi olarak XML 1.0 Tavsiyesi'ni yayınlar.

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.