MagmaNex LogoMagmaNex
Ana Sayfa/Blog/Web Güvenli Kodlama: Base64, URL Encoding ve HTML Entity
Web Güvenli Kodlama: Base64, URL Encoding ve HTML Entity
Rehber14 Haziran 2026· 6 dk okuma

Web Güvenli Kodlama: Base64, URL Encoding ve HTML Entity

Base64, URL kodlama ve HTML entity'leri ne işe yarar, hangisini ne zaman kullanmalısınız? Kodlamanın şifreleme olmadığını örneklerle anlatan Türkçe rehber.

#base64#url encoding#html entity#encoding#web geliştirme

Web Güvenli Kodlama: Base64, URL Encoding ve HTML Entity

Web'de veriyle çalışırken sürekli aynı sorunla karşılaşırız: bazı karakterler bulundukları yere "ait değildir". Bir resim ham hâliyle HTML'e giremez, bir boşluk URL'nin ortasında durmaz, bir < işareti tarayıcıda etiket sanılır. Bu sorunları çözen üç temel araç vardır: Base64, URL (yüzde) kodlaması ve HTML entity'leri. Üçü de "kodlama"dır ve en sık yapılan hatayla başlayalım: kodlama, şifreleme değildir.

Kodlama ≠ Şifreleme

Kodlama, veriyi farklı bir biçimde temsil etmektir; gizlemek değil. Anahtar yoktur, parola yoktur. Base64'e çevrilmiş bir metni gören herkes onu saniyeler içinde geri çözebilir. Amaç güvenlik değil, veriyi taşınabilir ve geçerli kılmaktır. Hassas veriyi korumak için AES gibi gerçek şifreleme ya da en azından HTTPS gerekir. Bunu aklınızda tutarak üç yöntemi inceleyelim.

Base64: İkili Veriyi Metne Çevirmek

Base64, ikili (binary) veriyi yalnızca güvenli metin karakterleriyle temsil eder. Kullandığı alfabe A–Z, a–z, 0–9 ile + ve / karakterlerinden, toplam 64 karakterden oluşur; eksik kalan grupları tamamlamak için = dolgusu eklenir.

Mantığı basittir: veri 3 byte'lık (24 bit) gruplara bölünür, her grup 6 bitlik 4 parçaya ayrılır ve her parça alfabedeki bir karaktere dönüşür.

Ne zaman kullanılır?

  • Data URI ile küçük resim, ikon veya yazı tipini doğrudan HTML/CSS'e gömmek: <img src="data:image/png;base64,iVBOR...">
  • E-posta eklerini taşıyan MIME standardı
  • JSON gibi yalnızca metin taşıyan formatlar içinde ikili veri göndermek
  • HTTP Basic Authentication başlıkları (ama bunun şifreleme olmadığını unutmayın)

En kritik dezavantaj: Base64 veriyi sıkıştırmaz, aksine yaklaşık %33 büyütür. Çünkü normalde 8 bit taşıyan bir byte'ı, yalnızca 6 bit veri tutan bir karakterle ifade eder. Bu yüzden büyük dosyaları Base64 ile gömmek mantıksızdır; yalnızca küçük varlıklar için anlamlıdır. Bir metni hızlıca dönüştürmek için Base64 Kodlayıcı aracını kullanabilirsiniz.

URL Encoding (Yüzde Kodlaması): Adres Çubuğuna Sığdırmak

URL'lerde yalnızca sınırlı bir karakter kümesi güvenle kullanılabilir. Boşluk, Türkçe karakterler, &, ?, =, / gibi karakterlerin bir kısmı özel anlam taşır (ayraç görevi görür), bir kısmı ise hiç yer alamaz. URL kodlaması bu karakterleri % işareti ve iki hane onaltılık (hex) koda çevirir.

Örneğin bir boşluk %20, & işareti %26, ç harfi ise %C3%A7 olur. Tipik bir örnek:

https://site.com/ara?q=kahve%20%26%20süt

Ne zaman kullanılır?

  • Sorgu parametrelerine (query string) kullanıcı girdisi koyarken
  • Bir URL'yi başka bir URL'nin parametresi yaparken (yönlendirme bağlantıları)
  • Form verilerini application/x-www-form-urlencoded ile gönderirken

Sık yapılan hata: Tüm URL'yi tek seferde kodlamak. https:// içindeki : ve / de kodlanırsa bağlantı bozulur. Yalnızca parametre değerlerini kodlayın, yapısal ayraçları değil. Hızlı bir dönüşüm için URL Kodlayıcı aracı işinizi görür.

HTML Entity'leri: Markup'ı Bozmadan Göstermek

HTML'de <, >, & gibi karakterlerin özel anlamı vardır: tarayıcı < gördüğünde bir etiket başladığını sanır. Eğer sayfada gerçekten "a < b" yazmak istiyorsanız, < karakterini HTML entity olarak yazmalısınız: &lt;. Benzer şekilde > için &gt;, & için &amp;, çift tırnak için &quot; kullanılır.

Ne zaman kullanılır?

  • Sayfada kod örneği veya <, > içeren metin göstermek
  • Kullanıcıdan gelen içeriği sayfaya basarken — bu aynı zamanda en önemli güvenlik konusudur

Kullanıcı girdisini olduğu gibi sayfaya yazarsanız, biri <script>...</script> gönderdiğinde tarayıcı bunu kod sanıp çalıştırır; buna XSS (Cross-Site Scripting) denir. Girdiyi HTML entity'ye çevirerek (escape ederek) <script> ifadesi zararsız bir metne dönüşür ve ekranda olduğu gibi görünür. Metninizi güvenle kaçışlamak için HTML Kodlayıcı aracını kullanabilirsiniz.

Not: Entity kodlaması, içeriği görüntülerken doğru çözümdür. JavaScript ile DOM'a veri eklerken textContent gibi güvenli yöntemler kullanmak da aynı korumayı sağlar.

Hangisini Ne Zaman? (Özet Tablo)

Kodlama Kullanım Alanı Örnek
Base64 İkili veriyi metne çevirmek (data URI, e-posta, JSON) HiSGk=
URL Encoding URL parametreleri ve rezerve karakterler boşluk → %20, &%26
HTML Entity HTML içinde özel karakterleri göstermek / XSS'i önlemek <&lt;, &&amp;

Doğru Aracı Seçmek

Pratik bir kural şudur: veriyi nereye koyduğunuz, hangi kodlamayı kullanacağınızı belirler.

  • Veri bir URL'nin içine mi gidiyor? URL encoding.
  • Veri HTML'in gövdesinde mi görünecek? HTML entity.
  • İkili bir şeyi metin taşıyan bir kanaldan mı geçiriyorsunuz? Base64.

Bu üçünü karıştırmak en yaygın hatadır. URL parametresini HTML entity ile kodlamak ya da HTML çıktısını Base64'e çevirmek işe yaramaz; her biri farklı bir bağlamın kurallarını çözer. Doğru katmanda doğru kodlamayı uygulayın.

Özet

Base64, URL kodlaması ve HTML entity'leri farklı sorunları çözer ama ortak bir amaçları vardır: veriyi bulunduğu ortamda geçerli ve güvenli kılmak. Üçü de şifreleme değildir; veriyi gizlemezler, yalnızca yeniden biçimlendirirler. Hangisini kullanacağınıza karar verirken "veri nereye gidiyor?" sorusunu sorun ve o bağlamın kurallarını uygulayın.

İlgili Araçlar


🛠 İlgili Araçlar

📚 İlgili Yazılar

← Tüm Yazılar🛠 Araçları Keşfet