HTML kaçışı, HTML'de özel anlamı olan karakterleri karşılık gelen varlık referanslarıyla değiştirme işlemidir. Kaçış uygulanması gereken beş karakter şunlardır: ve işareti (&), küçüktür (<), büyüktür (>), çift tırnak (") ve tek tırnak ('). Kaçış uygulanmadan bırakılırsa tarayıcı bu karakterleri görüntülenebilir metin yerine işaretleme yönergesi olarak yorumlar; bu durum sayfa oluşturmayı bozar ve enjeksiyon saldırılarına kapı aralar.
HTML belirtimi (WHATWG tarafından yönetilen) iki tür karakter referansı tanımlar: & gibi adlandırılmış varlıklar ve & ya da & gibi sayısal varlıklar. Adlandırılmış varlıklar kaynak kodda daha kolay okunur. Sayısal varlıklar (ondalık veya onaltılık) herhangi bir Unicode kod noktasını temsil edebilir; bu da adlandırılmış karşılığı olmayan karakterler için yararlı kılar. Her iki biçim de tarayıcıda aynı çıktıyı üretir.
Çözme (kod çözme olarak da bilinir) ters işlemdir: varlık referanslarını gerçek karakterlere geri dönüştürür. Bu işlem HTML kaynağından metin çıkarırken, içeriği sistemler arasında taşırken veya varlıkları çift kodlayan şablonlarda hata ayıklarken yaygın olarak kullanılır. Bu araç her iki yönü de tarayıcıda gerçekleştirir; böylece kaçış mantığınızı doğrulayabilir veya yoğun HTML içeren bir kaynaktan saniyeler içinde düz metin elde edebilirsiniz.
Neden HTML Kaçış Aracı Kullanmalısınız?
Büyük metin bloklarında köşeli parantezleri ve ve işaretlerini elle değiştirmek zahmetli ve hata yapmaya açıktır. Özel bir araç, girdinizi tek adımda dönüştürür; kurulum gerektirmez.
⚡
Anında Dönüşüm
Metin veya HTML yapıştırın; kaçışlı ya da çözülmüş çıktıyı hemen alın. Tüm işlem JavaScript ile tarayıcıda gerçekleştiğinden sunucu yanıtı beklenmez.
🔒
Gizlilik Öncelikli İşleme
Girdiniz tarayıcıyı hiçbir zaman terk etmez. Hiçbir şey sunucuya gönderilmez veya bir yerde saklanmaz; bu nedenle kimlik bilgileri, API anahtarları veya dahili kod içeren işaretlemeyi güvenle kaçış uygulayabilirsiniz.
📋
Hesap veya Kurulum Gerektirmez
Sayfayı açın ve yapıştırmaya başlayın. Giriş engeli, e-posta doğrulaması ya da yüklenecek yazılım yoktur. Modern tarayıcısı olan her cihazda çalışır.
🌐
Kapsamlı Varlık Desteği
Beş zorunlu HTML özel karakterini ve sayısal varlıkları (ondalık ve onaltılık) destekler. Gidiş-dönüş dönüşümünü destekler: kaçış uygulayıp ardından çözme işlemi orijinal dizeyi geri döndürür.
Kullanıcı tarafından gönderilen metni sayfaya eklemeden önce kaçış uygulayın; bu sayede tarayıcının metni HTML etiketi olarak yorumlaması önlenir. Ham dizeleri çıkaran her şablonda saklanan XSS saldırılarına karşı birincil savunma budur.
Backend Mühendisi: HTML Yanıtları Oluşturma
HTML'ye dize birleştiren sunucu tarafı kodu, ekleme yapmadan önce dinamik değerlere kaçış uygulamalıdır. İç içe tırnaklar gibi sınır durumlarda kaçış işlevinizin doğru çıktı ürettiğini doğrulamak için bu aracı kullanın.
DevOps: HTML'e Yapılandırma Gömme
Bir HTML sayfasına satır içi JSON veya kabuk komutları eklemek (örneğin bir script etiketi veya veri özniteliğine) kaçış gerektirir. Yapılandırma kod parçacıklarındaki köşeli parantez ve ve işaretlerinin düzgün kodlandığını doğrulayın.
QA Mühendisi: XSS Vektörlerini Test Etme
Uygulamanızın çıktısının doğru kaçışlı sürümle eşleştiğini doğrulamak için yaygın XSS yüklerini araca yapıştırın. Kaçışlı çıktıyı karakter karakter uygulamanızın ürettiğiyle karşılaştırın.
Teknik Yazar: Belgelerde Kod Örnekleri
HTML tabanlı belgelerde (Jekyll, Hugo, özel CMS'ler) kod parçacıkları yayımlarken genel tür sözdizimi ve şablon yer tutucuları için köşeli parantezlere kaçış uygulanması gerekir. Kod örneğinizi yapıştırın; her özel karakter anında kodlanır.
Öğrenci: HTML Varlıklarını Öğrenme
Herhangi bir karakter yazın ya da yapıştırın; adlandırılmış ve sayısal varlık biçimlerini görün. Bölünemez boşluklar, em tire ve Unicode sembolleri gibi sınır durumlarla deneyler yaparak HTML karakter kodlamasının nasıl çalıştığını anlayın.
HTML Varlık Referans Tablosu
Aşağıdaki tablo yaygın olarak kullanılan HTML varlıklarını listelemektedir. Beş özel karakter (& < > " ') HTML içeriğinde ve öznitelik değerlerinde her zaman kaçış uygulanmalıdır. Diğer varlıklar isteğe bağlıdır ancak yazılması zor ya da kaynak kodda belirsiz karakterler için kullanışlıdır.
İki işlem birbirinin tersidir. Yanlış yönü seçmek çift kodlanmış veya korumasız çıktı üretir.
Kaçış (kodlama)
Güvenilmeyen veya dinamik metni HTML'ye eklerken kullanın. Gerçek < karakterini < olarak dönüştürür; tarayıcı bir etiket başlatmak yerine karakteri görüntüler. Kullanıcı girdisi, günlük kayıtları veya işaretleme içerebilecek herhangi bir dize oluşturmadan önce uygulayın.
Çözme (kod çözme)
HTML kaynağından düz metin çıkarırken kullanın. < ifadesini < karakterine geri dönüştürür. Bir CMS'den içerik taşırken, kazınan HTML'yi ayrıştırırken veya karakter yerine varlık adı görüntüleyen &amp; gibi çift kodlanmış dizeleri düzeltirken uygulayın.
Kod Örnekleri
Aşağıda dört dilde HTML kaçış ve çözme işleminin çalışan örnekleri yer almaktadır. Her kod parçacığı her iki yönü de kapsar ve iç içe tırnaklar ile sayısal varlıklar gibi sınır durumları ele alır.
HTML kaçışı ile URL kodlaması arasındaki fark nedir?
HTML kaçışı, HTML'de özel olan karakterleri (< > & " ') < gibi varlık referanslarıyla değiştirerek bunların metin olarak görüntülenmesini sağlar. URL kodlaması (yüzde kodlaması), URL'lerde güvensiz olan karakterleri %XX onaltılık dizileriyle değiştirir. Farklı bağlamları korurlar: HTML kaçışı işaretleme enjeksiyonunu önlerken, URL kodlaması geçerli sorgu dizeleri ve yol bölümleri sağlar.
HTML'de hangi karakterlere kaçış uygulanmalıdır?
Her zaman kaçış uygulanması gereken beş karakter şunlardır: & (ve işareti), < (küçüktür), > (büyüktür), " (özniteliklerde çift tırnak) ve ' (özniteliklerde tek tırnak). Bu karakterlerden herhangi birine kaçış uygulanmaması oluşturmayı bozabilir veya siteler arası betik çalıştırma açığı oluşturabilir.
' HTML5'te geçerli midir?
Evet. ' adlandırılmış varlığı HTML5 belirtiminde tanımlanmıştır ve tüm modern tarayıcılar tarafından desteklenmektedir. Yalnızca &, <, > ve " varlıklarını tanıyan HTML 4'ün parçası değildi. Çok eski HTML 4 ayrıştırıcılarını desteklemeniz gerekiyorsa bunun yerine sayısal biçim olan ' kullanın.
&amp; gibi çift kodlanmış HTML varlıklarını nasıl düzeltirim?
Çift kodlama, zaten kaçış uygulanmış bir dize kaçış işlevinden ikinci kez geçtiğinde oluşur. Düzeltme yöntemi, çıktı kararlı hale gelene kadar çözme işlemi uygulamaktır. Çift kodlanmış dizeyi bu araca çözme modunda yapıştırın; ardından & referansları kalırsa tekrarlayın. Çift kodlamayı önlemek için kaçış işlevini uygulamadan önce girişin zaten kaçışlı olup olmadığını kontrol edin.
HTML varlıklarını JavaScript dizelerinde kullanabilir miyim?
HTML varlıkları JavaScript motoru tarafından değil, HTML ayrıştırıcısı tarafından yorumlanır. Bir script bloğunun içindeki kod, HTML ayrıştırıcısı sayfayı işledikten sonra çalışır; dolayısıyla script bloğundaki < ifadesi JavaScript görmeden önce < karakterine dönüşür. Satır içi olay işleyicilerde (onclick vb.) öznitelik değeri önce HTML olarak çözülür, ardından JavaScript olarak yürütülür. Harici .js dosyalarında varlıkların özel bir anlamı yoktur ve gerçek metin olarak değerlendirilir.
PHP'de htmlspecialchars ile htmlentities arasındaki fark nedir?
htmlspecialchars(), HTML yapısını etkileyen yalnızca beş özel karaktere (& < > " ') kaçış uygular. htmlentities() ise bu beşe ek olarak telif hakkı simgesi ve aksanlı harfler gibi adlandırılmış HTML varlığı olan her karaktere kaçış uygular. Güvenlik açısından ENT_QUOTES ile birlikte htmlspecialchars() yeterlidir. htmlentities(), UTF-8 işleyemeyen sistemler için ASCII güvenli çıktı gerektiğinde kullanışlıdır.
HTML kaçışı XSS'i önlemek için yeterli midir?
HTML kaçışı, en yaygın senaryoda XSS'i önler: güvenilmeyen metni HTML öğesi içeriğine veya öznitelik değerlerine eklemek. Diğer enjeksiyon bağlamlarını korumaz. Kullanıcı verilerini bir script bloğuna eklemek JavaScript dize kaçışı gerektirir. Bir style özniteliğine eklemek CSS kaçışı gerektirir. Bir URL özniteliğine (href, src) eklemek URL doğrulaması ve kodlaması gerektirir. Eksiksiz bir XSS savunması, her ekleme noktasında bağlama özgü kaçış uygular.