Punycode Nedir? Türkçe Karakterli Alan Adları Nasıl Çalışır?

Punycode, Türkçe karakterli alan adlarının DNS sorgularında kullanılacak ASCII uyumlu gösterimini oluşturan kodlama algoritmasıdır. Örneğin “örnek.com”, DNS sorgusunda “xn--rnek-4qa.com” biçiminde kullanılır; tarayıcı adres çubuğunda aynı adı “örnek.com” olarak gösterebilir.
Unicode, farklı dillerdeki karakterleri bilgisayarda temsil eden standarttır ve “ç”, “ğ”, “ı”, “ö”, “ş”, “ü” harflerini de kapsar. ASCII ise bu altı harfi içermez. Alan adlarında kullanılan ASCII gösterimi temel Latin harfleri, rakamlar ve tire gibi işaretlerden oluşur. Punycode, Türkçe harfleri sözcükten çıkarmadan veya “ö” yerine “o” yazarak adı değiştirmeden bu gösterime dönüştürür.
Türkçe Karakterli Alan Adlarında Punycode ve IDNA
Türkçe karakterli adlar, uluslararasılaştırılmış alan adları (IDN) kapsamındadır. Bu adların uygulamalarda nasıl işleneceğini belirleyen IDNA (Internationalized Domain Names in Applications), hangi karakterlerin geçerli olduğunu ve adın DNS ile uyumlu biçime nasıl çevrileceğini düzenler. Punycode bu kuralların içindeki kodlama adımıdır; tek başına hangi alan adının kaydedilebileceğini belirlemez.
Punycode yalnız Türkçe için geliştirilmemiştir. Farklı dillerdeki Unicode karakterlerini de aynı yöntemle kodlayabilir. Geniş bir karakter kümesindeki metni daha dar bir kümeyle temsil eden Bootstring algoritmasının Unicode için uyarlanmış biçimidir.
Alan adının noktalarla ayrılan her bölümü bir etikettir. IDNA terminolojisinde, gerekli geçerlilik koşullarını karşılayan ve en az bir ASCII dışı karakter içeren Unicode etiket U-label, bunun ASCII uyumlu karşılığı ise A-label olarak adlandırılır. A-label, xn-- ön ekiyle başlar; devamındaki bölüm Punycode çıktısıdır ve tüm etiketin geçerli bir U-label'a geri çözülebilmesi gerekir. Dönüşüm etiket bazında yapılır; alan adının tamamı tek parça olarak kodlanmaz.
Punycode, temel ASCII karakterlerini doğrudan korur; ASCII dışı karakterleri ise ASCII uyumlu ek bir kodlama bölümüne dönüştürür. Bu işlem geri çevrilebilir; geçerli bir A-label karşılık gelen U-label biçimine dönüştürülebilir. xn-- ön eki de bu özel ASCII gösterimini sıradan bir alan adı etiketinden ayırır.
Türkçe Karakterli Alan Adlarının Punycode Karşılıkları
“www.örnek.com” adında “www”, “örnek” ve “com” ayrı etiketlerdir. Yalnız “örnek” etiketi ASCII dışı karakter içerdiğinden A-label biçimine çevrilir. Sonuç “www.xn--rnek-4qa.com” olur; “www” ve “com” bölümleri değişmez.
| Okunabilir Alan Adı | DNS ile Uyumlu Gösterim | Dönüşen Bölüm |
|---|---|---|
| örnek.com | xn--rnek-4qa.com | “ö” içeren “örnek” etiketi |
| şeker.com | xn--eker-45a.com | “ş” içeren “şeker” etiketi |
| www.örnek.com | www.xn--rnek-4qa.com | Yalnız “örnek” etiketi |
Tablodaki her satır aynı alan adının iki gösterimini karşılaştırır; sitenin var olduğunu veya güvenilir olduğunu belirtmez. Punycode dönüşümü yeni bir alan adı kaydı ya da başka bir siteye yönlendirme oluşturmaz.
Punycode bir çeviri veya şifreleme yöntemi değildir; alan adını gizlemez. Algoritma “örnek” sözcüğünün anlamını başka bir dile çevirmez; Unicode karakter dizisini belirli kurallarla ASCII karakterlerinden oluşan geri dönüştürülebilir bir gösterime kodlar.
Türkçe Karakterli Alan Adları DNS Sorgusunda Nasıl Kullanılır?
Kullanıcı Türkçe karakterli bir alan adı yazdığında uygulama önce adı etiketlere ayırır ve IDNA açısından geçerli olup olmadığını değerlendirir. ASCII dışı karakter içeren geçerli U-label, A-label biçimine dönüştürülür; sıradan ASCII etiketler için bu kodlama gerekmez. DNS'e giden alan adı, dönüştürülen etiketlerle diğer etiketlerin birleşiminden oluşur.
- Kullanıcı Türkçe karakterli alan adını yazar veya bu adı içeren bir bağlantıyı açar.
- Uygulama ilgili etiketi IDNA kurallarına göre işler ve geçerli bir U-label olup olmadığını kontrol eder.
- Geçerli U-label, Punycode ile kodlanır ve başına “xn--” eklenerek A-label oluşturulur.
- DNS sorgusunda dönüştürülen etiketlerin A-label biçimi kullanılır. IPv4 adresini bildiren A, IPv6 adresini bildiren AAAA ve diğer DNS kayıtları sıradan ASCII alan adlarındaki gibi işlenir.
- Kullanıcı arayüzü, kendi görüntüleme ve güvenlik yaklaşımına göre adı Unicode ya da ASCII uyumlu biçimde gösterebilir.
Bu dönüşüm günlük kullanımda çoğu zaman görünmez. Kullanıcı okunabilir Türkçe adı görürken DNS altyapısı aynı etiketi ASCII uyumlu biçimiyle işler.
Uygulamalar, IDNA etiketlerini karşılaştırırken geçerli U-label biçimlerini A-label karşılığına dönüştürür. A-label değerleri büyük ve küçük harf farkı gözetilmeden aynıysa etiketler eşdeğer kabul edilir. Bu ayrıntı, yalnız görsel olarak aynı görünen iki metnin teknik olarak aynı alan adı sayılmayabileceğini gösterir. Karakter dizileri farklıysa Punycode karşılıkları ve DNS'teki hedefleri de farklı olabilir.
Türkçe Harfleri Düz Harflerle Değiştirmek Alan Adını Değiştirir mi?
“örnek.com” ile “ornek.com” farklı alan adlarıdır. Punycode, “örnek” sözcüğünü “ornek” yapmaz; “xn--rnek-4qa” biçiminde kodlar. Benzer şekilde “ş” ile “s”, “ı” ile “i” birbirinin yerine yazıldığında aynı alan adı korunmuş olmaz.
Türkçe karakterli adı kaydetmek, düz harflerle yazılan diğer adı kendiliğinden kaydetmez. İki adın aynı siteye ulaşması isteniyorsa her iki ad için de gerekli kayıt ve site ayarları ayrıca yapılır. Bunlar Punycode dönüşümünden ayrı işlemlerdir.
Türkçe Karakterli Alan Adı Kaydında Geçerlilik ve Uzunluk
Türkçe harflerle yazılan bir adın Punycode karşılığının üretilebilmesi, adın IDNA açısından geçerli olduğu veya kaydedilebileceği anlamına gelmez. IDNA, karakterlerin izinli olup olmadığını, bazı karakter birleşimlerini ve belirli yazı yönü kurallarını ayrıca değerlendirir. U-label, aynı karakterin eşdeğer Unicode gösterimlerini ortak biçimde birleştiren NFC normalizasyonuna da uygun olmalıdır.
Tarayıcı, kodlamadan önce büyük harfleri küçültme gibi ek eşleme işlemleri yapabilir. Örneğin “ÖRNEK” girdisinin “örnek” olarak işlenmesi, Punycode kodlamasından önceki bir adımdır; Unicode standardı UTS #46, bu tür uygulama uyumluluğu kurallarını tanımlar. Geri dönüşte elde edilen U-label, bu işlemlerden sonraki geçerli etikettir; kullanıcının ilk yazdığı büyük-küçük harf biçimi mutlaka geri gelmez.
Başındaki “xn--” dahil A-label en fazla 63 ASCII karakteri, yani 63 bayt olabilir. Bu yüzden ön ekten sonraki Punycode bölümüne en fazla 59 karakter kalır. Ekranda kısa görünen bir adın kodlanmış karşılığı daha uzun olabileceğinden uzunluk denetimi ASCII biçiminde de yapılır.
Buna ek olarak alan adı kayıt kuruluşu veya ilgili DNS bölgesini yöneten kayıt sistemi, IDNA açısından geçerli olan bazı etiketleri kendi politikası gereği kabul etmeyebilir. Seçilen uzantının Türkçe karakter desteği, adın daha önce kaydedilmiş olması, benzer adlara ilişkin kurallar ve kayıt politikasına özgü başka kısıtlamalar sonucu etkileyebilir. Bu nedenle “Punycode karşılığı üretilebiliyor” ile “bu alan adı kesin kaydedilebilir” aynı şey değildir.
Benzer Görünen Karakterler Neden Risk Oluşturur?
Farklı yazı sistemlerinde görsel olarak birbirine çok benzeyen karakterler bulunur. Latin harfine benzeyen başka bir alfabedeki karakter kullanıldığında, kullanıcı iki farklı alan adını ekranda aynı veya çok benzer sanabilir. Unicode güvenlik standardı bu tür karakterleri confusable (görsel olarak karıştırılabilen) karakterler olarak tanımlar ve aynı ya da farklı yazı sistemleri içinde oluşan benzerlikleri ayrı sınıflara ayırır.
Risk yalnız farklı yazı sistemlerinin karışmasıyla sınırlı değildir. Tamamı tek bir yazı sisteminden oluşan iki farklı Unicode dizisi de görsel olarak karıştırılabilir. Bu nedenle Punycode kötü amaçlı bir özellik değildir; güvenlik sorunu, farklı teknik adların yanıltıcı derecede benzer görünmesinden doğar.
Şüpheli bir bağlantıda sayfa tasarımına veya alan adının ilk görünümüne güvenmeyin; tam alan adını dikkatle kontrol edin. Beklenmeyen karakterler, alışılmadık yazı sistemi karışımları veya adres çubuğunda “xn--” ile başlayan bir etiket tek başına saldırı kanıtı değildir; ancak alan adının gerçek karakter dizisini ayrıca doğrulayın.







