Tüm makaleler

Punycode: uluslararasılaştırılmış alan adları DNS'te nasıl çalışır

Türkçenin noktasız «ı» ve noktalı büyük «İ» harfleri, Unicode'da birbirinden tamamen ayrı iki kod noktasıdır — ve tam da bu yüzden Türkçe karakterli alan adlarında Punycode dönüşümü, birçok yazılımın varsayılan olarak beklediği İngilizce büyük/küçük harf kurallarıyla sürekli çakışan bir alandır.

«ş», «ğ», «ü», «ö», «ç»: ASCII'nin hiç tanımadığı harfler

Türkçeye özgü beş harf — ş, ğ, ü, ö, ç — ASCII karakter setinde hiç yer almaz, bu yüzden bunları içeren her alan adı DNS'e ulaşmadan önce xn-- önekiyle başlayan bir forma dönüştürülür. Görünen ad ile ağda gerçekten dolaşan dizi birbirinden tamamen farklıdır.

Neden DNS doğrudan UTF-8'e geçmedi

DNS'i UTF-8'i yerel olarak kabul edecek şekilde değiştirmek, dünyadaki tüm ad sunucularının eş zamanlı güncellenmesini gerektirirdi. Punycode bu sorunu ortadan kaldırır: yalnızca tarayıcının ve kayıt kuruluşunun kodlamayı anlaması yeterlidir, alttaki DNS altyapısı hâlâ sadece ASCII görür.

Yaygın kullanım alanları

  • Bir e-postada veya bağlantıda görülen xn--... dizisinin arkasındaki gerçek alan adını kontrol etmek.
  • Türkçe karakter içeren bir alan adını, yalnızca ASCII kabul eden bir DNS panelinde kullanmadan önce Punycode formuna çevirmek.
  • Sertifikalarda veya e-posta adreslerinde IDN kaynaklı sorunları teşhis etmek.

Homoglif saldırısı Türkçe markaları da etkiler

Kiril alfabesindeki "а" harfi, çoğu yazı tipinde Latin "a" harfinden ayırt edilemez; saldırganlar bunu kullanarak "аpple.com" gibi, Punycode ile benzersiz bir xn-- dizisine kodlanan ama meşru bir markaymış gibi görünen alan adları kaydeder. Bir etiket alfabetleri şüpheli biçimde karıştırdığında, modern tarayıcılar onu çözmek yerine doğrudan ham xn-- biçimini gösterir.

Aracı dene