HTML / Entity Kodlayıcı-Çözücü

Metni HTML entity'lerine kodlar (örn. < → &lt;) veya entity'leri geri çözer. Dönüşüm tamamen tarayıcınızda yapılır; metin sunucuya gönderilmez.

Son güncelleme:

Mod
Kodlama kapsamı
"Yalnız özel karakterler" HTML gövdesi/öznitelik için yeterlidir. "Tüm ASCII-dışı" çıktıyı saf ASCII yapar (eski sistem/e-posta uyumu).
Girdi
Kodlamak veya çözmek istediğiniz metni girin. Çıktı siz yazdıkça güncellenir.

Çıktı

Bu kodlayıcı ne zaman gerekir

CMS'e yapıştırılan içerik bozulduğunda

Sayfada &amp;amp; gibi zincirler görünüyorsa içerik bir yerde iki kez kodlanmış demektir. Değeri buraya yapıştırıp kaç kez çözüldüğünde normale döndüğünü saymak, bozulmanın hangi katmanda olduğunu söyler.

Kod örneği yayınlarken

Bir blog yazısında <script> etiketini göstermek istiyorsanız etiketi kodlamak zorundasınız; aksi hâlde tarayıcı onu gösterecek metin değil çalıştırılacak kod sayar. Örnek kod blokları bu aracın en sık kullanım yeridir.

Şüpheli bir payload'ı incelerken

XSS raporlarındaki kodlanmış diziler (&#x3C; karışımları, çift kodlama katmanları) çıplak gözle okunmaz. Katman katman çözmek, payload'ın gerçekte hangi etiketi kurmaya çalıştığını görünür yapar.

Çalışılmış örnek: bu sitede ü harfini &#xFC; yapan hata

HTML kodlamanın bağlam işi olduğunu, bu sitenin kendi commit geçmişindeki bir hatadan daha iyi anlatan örnek yok.

  1. Razor'da @degisken ifadesi çıktıyı otomatik HTML-encode eder: ü harfi &#xFC; entity'sine çevrilir.
  2. HTML gövdesinde bu doğru davranıştır: tarayıcı entity'yi çözer, ekranda ü görünür.
  3. Aynı ifade satır içi bir <script> bloğunda kullanılınca kural değişir: tarayıcı script içinde entity çözmez.
  4. Sonuç bu sitede canlıda görüldü: JavaScript değişkenine harfiyen &#xFC; yazıldı ve kullanıcıya öyle gösterildi.
  5. Kalıcı çözüm bağlama uygun kaçışlamaydı: değer JSON'a serileştirilip Html.Raw ile basıldı; JSON kaçışı script bağlamının kuralıdır.

Kodlama karakterin değil bağlamın işlevidir. Aynı ü harfi HTML gövdesinde entity ile, script bloğunda JSON kaçışıyla, URL'de percent-encoding ile taşınır. "Bu değeri nereye basıyorum?" sorusuna cevap vermeden doğru kaçışlama seçilemez; testler ASCII veriyle geçtiği için bu sınıf hatalar ancak Türkçe karakter ekranda bozulunca yakalanır.

Sık yapılan dört hata

Çift kodlamayı normal sanmak

&amp;amp; zinciri her zaman bir işaret hatasıdır: bir katman fazladan kodlamış. Görünürde düzeltmek için bir kez çözmek semptomu giderir ama kaynaktaki fazla kodlama durur; zincirin üretildiği katmanı bulup oradaki kodlamayı kaldırmak gerekir.

Özniteliği tırnaksız bırakmak

value=@deger gibi tırnaksız bir öznitelikte boşluk karakteri yeni öznitelik başlatır; encode bile bunu kurtarmaz, çünkü boşluk kodlanması zorunlu bir karakter değildir. Öznitelik değerleri her zaman tırnak içinde ve tırnakları kodlanmış olmalıdır.

Girişte temizleyip çıkışta güvenmek

Kayıt sırasında "temizlenen" veri yıllar sonra başka bir ekranda, başka bir bağlamda basılır. Güvenlik sınırı çıkıştır: veri hangi sayfaya basılıyorsa oradaki bağlama göre kodlanır, veritabanındaki hâline güvenilmez.

URL bağlamına entity kodlaması uygulamak

href özniteliğine giren bir değer için HTML entity kodlaması yeterli değildir: javascript: şeması entity'siz de çalışır. URL'ler için ayrı kurallar vardır — şema doğrulama ve percent-encoding; iki savunma birbirinin yerine geçmez.

Bu araçla birlikte kullanılanlar

  • Base64 Kodlayıcı-Çözücü Metni Base64'e kodlayın veya geri çözün. Standart ve URL-güvenli (base64url) varyant; UTF-8 uyumlu, tarayıcıda.
  • HTML Görüntüleyici HTML kaynağını yapıştırın, anında canlı önizleyin. Sandbox'lı, izole bir çerçevede; script'ler güvenlik için kapalı.
  • JWT Çözücü Bir JSON Web Token'ın header ve payload bölümlerini çözün, standart claim'leri ve geçerlilik süresini görün. Token tarayıcıdan çıkmaz.
  • Kubernetes Kaynak Bütçesi Hesaplayıcısı Pod istekleri ve düğüm boyutuna göre kaç düğüme ihtiyacınız olduğunu, paketleme verimliliğini ve tahmini aylık maliyeti hesaplayın.
  • UUID Üretici Kriptografik olarak güvenli UUID v4 ve zaman-sıralı v7 üretin. Toplu üretim ve biçim seçenekleri.

Sık Sorulan Sorular

HTML kodlama ile URL kodlama arasında ne fark var?

HTML kodlama, HTML belgesinde anlam taşıyan karakterleri (< > & " ') entity'lere çevirir; amaç tarayıcının metni etiket sanmasını engellemektir. URL kodlama (percent-encoding) ise URL'de güvenli olmayan karakterleri %XX biçimine çevirir. İkisi farklı bağlamlar içindir ve birbirinin yerine geçmez.

HTML'de hangi karakterler mutlaka kodlanmalı?

Asgari olarak beş karakter: & (&amp;), < (&lt;), > (&gt;), " (&quot;) ve ' (&#39;). & ilk sırada kodlanmalıdır, yoksa diğer entity'ler bozulur. Öznitelik değerleri tırnak içindeyse tırnak karakterinin kodlanması kritiktir.

Neden &apos; yerine &#39; kullanılıyor?

&apos; adlı entity HTML5'te tanımlıdır ama HTML4 ve bazı eski tarayıcılarda yoktu. Sayısal başvuru &#39; her sürümde çalışır; bu yüzden tek tırnak için en güvenli ve taşınabilir seçimdir. Bu araç da encode'da &#39; üretir.

.NET'te HTML nasıl kodlanır?

System.Net.WebUtility.HtmlEncode(string) bağımlılıksız çalışır; web projelerinde System.Web.HttpUtility.HtmlEncode de kullanılabilir. Razor'da @degisken ifadeleri çıktıyı otomatik HTML-encode eder — ham HTML basmak için bilinçli olarak @Html.Raw gerekir.

Bu araç XSS'i tamamen önler mi?

Tek başına hayır. HTML-encode, veriyi HTML gövdesine basarken doğru savunmadır; ancak öznitelik, JavaScript, CSS veya URL bağlamlarında farklı kaçışlama kuralları gerekir. Doğru yaklaşım: bağlama uygun encode + Content Security Policy + girdi doğrulama. Bu araç kodlamayı görmenize ve doğrulamanıza yarar.