<, > ve Daha Fazlası
HTML entity'leri, web geliştirmenin en temel ancak sıklıkla yanlış anlaşılan yönlerinden biridir. Tarayıcının HTML işaretlemesi olarak yorumlayacağı karakterleri görüntüleme mekanizmasıdır ve web güvenliğinde kritik bir rol oynar. İster siteler arası betik çalıştırma saldırılarını önlemek için özel karakterleri kodluyor, ister matematiksel semboller görüntülüyor veya içeriğin farklı kodlamalarda doğru şekilde render edilmesini sağlıyor olun, HTML entity'lerini anlamak her web geliştiricisi için gereklidir.
HTML Entity Nedir?
HTML entity, HTML'de tek bir karakteri temsil eden bir karakter dizisidir. Entity'ler ve işareti (&) ile başlar ve noktalı virgül (;) ile biter. Tarayıcı bir entity ile karşılaştığında, render sırasında onu karşılık gelen karakterle değiştirir. Bu mekanizma, aksi takdirde imkansız veya sorunlu olacak karakterleri HTML'inize dahil etmenize olanak tanır.
<) bir etiketi başlatır, büyüktür işareti (>) bir etiketi bitirir, ve işareti (&) ise bir entity referansını başlatır. Bu karakterleri işaretleme yerine görünür içerik olarak görüntülemek istiyorsanız, onları entity olarak kodlamalısınız.
Yaygın HTML Entity'leri
HTML 2.000'den fazla adlandırılmış entity tanımlasa da, günlük web geliştirmede sadece birkaçı sıklıkla kullanılır. İşte en çok karşılaşacağınız ve kullanacağınız entity'ler:
Beş Zorunlu Entity
| Karakter | Adlandırılmış Entity | Ondalık Entity | Onaltılık Entity | Kullanım |
|---|---|---|---|---|
| & | & | & | & | Entity referanslarıyla belirsizliği önlemek için her zaman kodlanmalıdır |
| < | < | < | < | HTML etiket başlangıcı olarak yorumlanmayı önlemek için kodlayın |
| > | > | > | > | HTML etiket sonu olarak yorumlanmayı önlemek için kodlayın |
| " | " | " | " | Özellik değerlerinden çıkılmasını önlemek için kodlayın |
| ' | ' | ' | ' | Tek tırnaklı özellik değerlerinden çıkılmasını önlemek için kodlayın |
Yaygın Sembol Entity'leri
| Karakter | Adlandırılmış Entity | Açıklama |
|---|---|---|
| © | © | null |
| null | Telif hakkı sembolü | ® |
| ® | null | null |
| Tescilli marka sembolü | ™ | ™ |
| null | null | Marka sembolü |
| — | — | null |
| null | Em tire | – |
| – | null | null |
| En tire | • | • |
| null | null | Madde işareti |
Sayısal ve Adlandırılmış Entity'ler
HTML entity'leri iki biçimde gelir: adlandırılmış ve sayısal. Aralarındaki farkı anlamak, her durumda doğru entity'yi seçmenize yardımcı olur.
Adlandırılmış Entity'ler
< küçüktür işaretini, © ise telif hakkı sembolünü temsil eder. Adlandırılmış entity'ler daha okunabilir ve hatırlanması daha kolaydır, bu da HTML kaynak kodunuzun bakımını kolaylaştırır. Ancak, adlandırılmış entity'ler yalnızca sınırlı bir karakter kümesi için mevcuttur — yaklaşık 2.000, oysa Unicode'da 140.000'den fazla karakter vardır.
Sayısal Entity'ler
Sayısal entity'ler, Unicode kod noktasına göre bir karaktere referans verir. İki biçimde gelir: ondalık ve onaltılık. Ondalık sayısal entity'ler NNN; biçimini kullanır, burada NNN ondalık kod noktasıdır. Onaltılık entity'ler HHH; biçimini kullanır, burada HHH onaltılık kod noktasıdır. Örneğin, telif hakkı sembolü © (ondalık) veya © (onaltılık) olarak yazılabilir.
Sayısal entity'ler herhangi bir Unicode karakterini temsil edebilir, bu da onları adlandırılmış entity referansı olmayan karakterler için vazgeçilmez kılar. Nadir CJK karakterleri, tarihi yazı karakterleri veya adlandırılmış entity'si olmayan emoji'leri görüntülemeniz gerekiyorsa, sayısal biçimi kullanmalısınız.
Hangisi Ne Zaman Kullanılır
- <, >, ", ') ve ©, ®, ™ gibi yaygın semboller için adlandırılmış entity'leri kullanın. Daha okunabilir ve kendi kendini belgeleyendir.
- İhtiyacınız olan karakterin adlandırılmış entity'si olmadığında veya programatik olarak HTML oluşturduğunuzda ve tutarlı bir evrensel kodlama yöntemine ihtiyacınız olduğunda sayısal entity'leri kullanın.
- Unicode kod noktalarıyla uğraşırken onaltılık sayısal entity'leri kullanın, çünkü onaltılık, Unicode belgelerinde ve karakter tablolarında standart gösterimdir.
HTML Entity'leri Ne Zaman Kullanılır
Entity'leri ne zaman kullanacağınızı bilmek, nasıl kullanacağınızı bilmek kadar önemlidir. İşte entity'lerin gerekli veya faydalı olduğu başlıca senaryolar:
1. Ayrılmış Karakterleri Görüntüleme
< olarak yazmalısınız. Çıplak bir < yazarsanız, tarayıcı bunu bir HTML etiketinin başlangıcı olarak ayrıştırmaya çalışır, bu da sayfa düzeninizi bozabilir veya güvenlik açıkları oluşturabilir.
2. Belirsiz Ve İşaretini Önleme
Bir harf ve noktalı virgül tarafından takip edilen ve işareti her zaman bir entity referansı olarak yorumlanır. İçeriğinizde bir entity'nin parçası olmayan bir ve işareti varsa (örneğin 'Tom & Jerry'de), bunu & olarak kodlamalısınız. Kodlanmamış ve işareti ve ardından bir entity adıyla eşleşen metin, yanlış kod çözülecektir. Örneğin, kodlanmamış 'AT&T', tarayıcı &T'yi bir entity referansı olarak yorumlarsa 'AT&T'ye dönüşebilir (&T geçerli bir entity olmasa da, bu davranış teknik olarak hala hatalıdır).
3. Klavye Dışı Karakterleri Dahil Etme
Em tire, telif hakkı işareti ve matematiksel operatörler gibi karakterler, standart klavyede yazılması zor olabilir. Entity'ler, editörünüzün giriş yöntemine veya karakter haritasına güvenmeden bu karakterleri dahil etmenin güvenilir bir yolunu sağlar. Örneğin, — yazmak genellikle klavyede em tire karakterini bulmaktan daha kolaydır.
4. Bölünemez Boşluk
entity'si, tarayıcının o konumda satır sonu yapmasını önleyen bölünemez bir boşluk oluşturur. Bu, '10 kg', 'Bölüm 3' veya satırlara bölünmemesi gereken marka adları gibi ilgili kelimeleri aynı satırda tutmak için çok önemlidir. Ayrıca, CSS'in uygun olmadığı düzenlerde görsel boşluk oluşturmak için de yaygın olarak kullanılır.
Güvenlik Etkileri: XSS Koruması
HTML entity kodlaması, siteler arası betik çalıştırma (XSS) saldırılarına karşı en önemli savunma hatlarından biridir. XSS, bir saldırgan diğer kullanıcıların görüntülediği bir web sayfasına çalıştırılabilir kod enjekte edebildiğinde gerçekleşir. Entity kodlaması, tehlikeli karakterleri güvenli entity eşdeğerlerine dönüştürerek bunu önler.
Entity Kodlama XSS'i Nasıl Önler
ararsa ve sayfa kodlama olmadan render edilirse, tarayıcı bu betiği çalıştırır. Ancak, çıktı entity kodlamasından geçirilirse, <script>alert('xss')</script> haline gelir ve tarayıcı bunu kod çalıştırmak yerine gerçek metin olarak görüntüler.
Bağlama Özel Kodlama Kuralları
Entity kodlaması HTML içerik ve özellik bağlamlarında çalışır, ancak farklı bağlamlar farklı kodlama stratejileri gerektirir:
- <, >, & işaretlerini entity olarak kodlayın. Bu, yeni HTML etiketlerinin enjekte edilmesini önler.
- <, >, &, ", ' işaretlerini entity olarak kodlayın. Özellik değerinden çıkılmasını önlemek için tırnak işaretleri kodlanmalıdır.