IDN Homograf Denetleyici

İki ad farklı karakterlerle yazılabilir ve yine de aynı şekilde okunabilir. apple.com ve аpple.com — ilk harfin Kiril küçük harf a olduğu yerde — ağ açısından farklı adlardır ve bir okuyucu açısından aynı sözcüktür. Bu sayfa bir adı parçalara ayırır ve bu iki durumdan hangisi olduğunu söyler: adı etiketlere böler, her xn-- etiketini taşıdığı karakterlere geri çözer, baytları DNS sınırlarına karşı sayar, her benzer karakteri ödünç aldığı alfabeyle birlikte adlandırır ve tüm adı taklit ettiği şekle katlar. Bulduğunu ve bulamadığını aynı ayrıntı düzeyinde bildirir; böylece temiz bir yanıt, hiçbir şeye bakılmadığı anlamına gelmez, denetimlerin çalıştığı ve geçtiği anlamına gelir.
Tüm işlemler tarayıcınızda yerel olarak yapılır — yazdığınız ad asla yüklenmez ve asla çözümlenmez.

Bu konuda yeni misiniz? IDN homografları sade bir dille açıklanmış — punycode'un ne yapıp ne yapmadığı, bir tarayıcının neden bazen xn-- gösterdiği ve bu sayfanın neden bir hüküm değil, bir denetimler kümesi olduğu.
Girdiyi şöyle oku: Önce adı NFC'ye katlayın
ŞÖYLE OKUNUR —
DNS FORMU (bir çözümleyicinin aldığı) —
BOYUT —
Henüz hiçbir şey denetlenmedi. Yukarıya bir ad yazın ya da yapıştırın — her seferinde bir ad — ya da Bir örnek yükleyin'e basın. Sayfa çıplak bir adı, bir URL'den kopyalanmış bir adı ya da tüm bir URL'yi okur ve hangisini aldığını söyler. Yaptığı her denetim sonucun altında listelenir; bulamadıkları da dahil.
IDN homografı nedir?
Bir homograf, bir biçimde yazılıp başka şekilde okunan bir sözcüktür. Bir alan adında bu hile genellikle tek bir karaktere mal olur: apple.com yedi Latin harfidir, oysa аpple.com U+0430 ile başlar, Kiril küçük harf a'dır ve sahip olduğunuz her yazı tipinde aynı biçimde çizilir. Ağ açısından bunlar iki farklı addır. Gözünüz açısından aynı sözcüktür ve bunlardan yalnızca biri Apple'ınkidir.

DNS'in ilk yirmi yılında adlar yalnızca ASCII idi ve bu yüzden hakkında her şey bayt ve harf cinsinden ölçülür: harf, rakam ve tireden oluşan etiketler, her biri en fazla 63 bayt, toplamda en fazla 255 bayt. Uluslararası bir alan adı (IDN), kuralların Unicode'un geri kalanına açılmasının sonucudur ve punycode (RFC 3492), eski mekanizmayı çalışır tutan yazım kuralıdır: ASCII dışında bir şey içeren bir etiket, aynı karakterleri katlanmış bir biçimde taşıyan bir ASCII dizgisi olan bir xn-- etiketi olarak yazılır. 中文.com, xn--fiq228c.com olarak dolaşır ve iki yazım da aynı ana bilgisayarı adlandırır.

Burada önemli olan, punycode'un ne yapmadığıdır. Yalnızca yazımı dönüştürür, başka hiçbir şeyi yapmaz. аpple.com'un apple.com'un yanında durmasına izin verilmesi gerekip gerekmediği konusunda bir görüşü yoktur ve bu soru sorulamazdı, çünkü bu soru baytlarla değil, gözlerle ve yazı tipleriyle ilgilidir. Kayıt otoritesi hangi karakterleri satacağına, tarayıcı güvenli saydığı bir adın nasıl görüntüleneceğine, okuyucu ise tıklayıp tıklamayacağına karar verir. Bu sayfa üçünün altında yatan soruyu yanıtlar: bu ad gerçekte hangi karakterlerden oluşuyor ve bu onu neyi yazar hâle getiriyor?

Bu sayfanın karşı denetlendiği durumlar

Aşağıdaki her satır, sayfa yüklendiğinde bu sayfa tarafından çalıştırılır ve Kendi testi düğmesiyle yeniden çalıştırılır; sayfa satırın bildirdiğini tam olarak bildirmek zorundadır — aynı bulgular, aynı düzey, aynı DNS formu, aynı bayt sayısı, daha fazla ya da daha az değil. Temiz bir yanıtı burada değerli kılan da budur: sıradan bir adı geçiren kod yolu, aşağıdaki numaraları yakalayanla aynıdır.

Durum nedir Düzey Geldiği haliyle ad Sayfanın ne bildirmesi gerekir

Bu sayfa nasıl karar verir
  1. Adı yapıştırdığınız şeyden ayırın. Çıplak bir ad olduğu gibi kullanılır; bir URL'nin ana bilgisayarı ayrılır ve şema, bağlantı noktası, yol ve sorgu atılır. Sayfa bir eğik çizgiyi sessizce bir adın parçası gibi çözümlemek yerine hangisini yaptığını söyler.
  2. Adı bir istemcinin yapacağı gibi temizleyin. Denetim karakterleri, sıfır genişlikli karakterler ve bayt sırası işareti atılır; tam genişlikli ya da ideografik nokta bir nokta sayılır ve sondaki nokta bir hata değil kök olarak ele alınır. Bu şekilde kaldırılan ya da yeniden yorumlanan her karakter bildirilir, çünkü sessizce atılmış bir sıfır genişlikli boşluk tam da size söylenmesi gereken şeydir.
  3. Adı etiketlere bölün ve her birini ölçün. Bir etiket boş olamaz, tireyle başlayamaz ya da bitemez; xn-- etiketi değilse üçüncü ve dördüncü konumlarda iki tire taşıyamaz. Her etiket UTF-8 bayt cinsinden 63 baytlık tavana, tüm ad ise 255'e karşı ölçülür.
  4. Her xn-- etiketini karakterlerine geri çözün. Çözülen etiket ikinci kez kodlanır ve yazdığınızla karşılaştırılır. Bu gidiş-dönüşten sağ çıkmayan bir etiket, iddia ettiği etiket değildir; bir denetim karakterine ya da hiçbir şeye çözülen bir etiket sessizce atılmak yerine öyle bildirilir.
  5. Her karakterin ne olduğunu sorun. Kod noktasını, UTF-8 baytlarını, ait olduğu alfabeyi, aynı biçimde çizilen bir karakter grubunda olup olmadığını ve o grubun diğer üyelerinin neler olduğunu. Kiril bir a'nın "bir harf" olmaktan çıkıp "bir Latin harfine benzeyen bir harf" hâline geldiği yer burasıdır.
  6. Adı taklit ettiği şekle katlayın. Her benzer karakter, benzediği karakterle değiştirilir; bu da аpple.com'u apple.com'a çevirir. Bu katlanmış okuma sayfadaki en yararlı satırdır, çünkü apple.com üzerinde işlem yapabileceğiniz bir şeydir; "Kiril bir a" ise değildir.
  7. Bulguları toplayın ve en kötüsünü bildirin. Bulgular, geçtikleri etiketlerle birlikte her biri bir kez bildirilir. Yalnızca olağandışı görünen bir ad, bulgular yerine notlar üretir: Han ile Kana'nın karışması ya da kök noktayla bitmesi sıradan yazıdır, endişe nedeni değildir.

Seviyeler ve neyi iddia ettikleri

yok burada bahsetmeye değer bir şey yoktu — düşük aynı ad ikinci kez farklı yazılmış — orta DNS'in taşımayacağı bir karakter ya da düz bir harfe katlanan bir karakter — yüksek farklı bir ad olarak okunmak üzere kurulmuş bir ad ya da hiç gönderilemeyen bir ad.

Bir düzey, bulguların anlamına gelebilecek en kötü şeydir; bir olasılık değil, siteye dair bir yargı değildir. Tamamen dürüst bir ad, ana bilgisayar adı alfabesinin dışında tek bir karakter içerdiği için orta olabilir; düşmanca bir ad ise içinde bir Kiril harfinden başka sofistike bir şey olmadan yüksek olabilir. Düzeyin altındaki liste nedenini söyler, her bulgu için bir satır; ve okumaya değer olan kısım o listedir.

Yaptığı denetimler, tek tek

Aşağıdaki tablo, sayfanın raporladığı aynı listeden oluşturulur; bu yüzden buradaki bir satır ile bir sonucun bulgusu birbiriyle çelişemez. Bir şey bulamayan bir denetim hayır olarak listelenir: tablonun amacı, sorunun sorulduğunu ve yanıtlandığını görebilmenizdir, sorulup sorulmadığını merak etmeniz değil.

Denetim Ne anlama gelebilecek en kötü şey Neyi arar

Aynı liste notları da yönetir ve notların hiçbir düzeyi yoktur: noktası olmayan tek bir etiket, sondaki kök nokta, ASCII olmayan bir üst düzey alan adı, nokta dışında bir ayırıcı, büyük harfli bir ad, temizlenirken kaldırılan karakterler ve ana bilgisayarına indirgenmiş bir URL.

DNS'in uyguladığı sınırlar

Bir ad etiketlerin bir listesidir ve her biri karakter değil bayt cinsinden sayılır. Punycode'un var olmasının tüm nedeni bu ayrımdır: 中文 iki karakter ve altı bayttır, xn-- biçimi ise on beş karakterdir; bu yüzden sığması gereken kodlanmış yazımdır. Sayfa her iki tavanı uygular ve hangisine çarptığınızı bildirir.

Sınır Değer Kenarda ne olur
Bir tarayıcı neden bazen xn-- gösterir

Çince ya da Kiril yazılmış bir adın adres çubuğunuzda bazen beklediğiniz karakterler yerine xn-- saçmalığı olarak göründüğünü fark etmiş olabilirsiniz. Bu, sitenin kaydı başarısız olduğu değil, tarayıcının güzel biçimi göstermeyi reddetmesidir. Bir tarayıcı, daha önce hiç görmediği bir adı kendi kuralıyla ele alır ve bu kuralın var olma nedeni, tüm bu sayfanın var olma nedeniyledir: аpple.com'u аpple.com olarak göstermek tam olarak bir saldırganın istediği şeydir; bu yüzden tanıdık olmayan karışık alfabeli bir ad, güvenilecek kadar sık görülene kadar kodlanmış yazımıyla gösterilir.

Ad nerede görünür Gösterilen Neden

Bu sayfanın yapmayacakları
Bu bir denetimler kümesidir, bir hüküm değildir ve bir kara liste değildir. Bir adın neyden oluştuğunu bildirir; sitenin ne yaptığı hakkında hiçbir fikri yoktur. Bir ad buradaki her denetimi geçip yine de bir oltalama sayfası olabilir; ve bir ad karışık yazılı bir ad olarak işaretlenip kendi dilini yazan birine ait tamamen sıradan bir web sitesi olabilir. Şekil grupları UTS #39'daki karıştırılabilir karakterlerin el yazısıyla hazırlanmış bir alt kümesidir, bu yüzden bu sayfanın bilmediği bir karakter çifti bildirilmez. Ayrıca burada hiçbir şey çözümlenmez, indirilmez ya da aranmaz: yazdığınız ad tarayıcıdan asla çıkmaz; bu da sayfanın bir adın var olup olmadığını bilemeyeceği anlamına gelir.
Kurallar nereden geliyor

Punycode RFC 3492'dir ve bu sayfadaki kendi testi, o belgede yazdırılan on bir örnek etiketi ilk denetim olarak çalıştırır; böylece buradaki kodlayıcı kendisiyle değil standardın örnekleriyle sınanır. Bir IDN'nin geçtiği işleme kuralları RFC 5892'nin karakter tablolarıyla birlikte RFC 5891'dir ve tarayıcıların gerçekte uyguladığı uyumluluk katmanı, geçişli olmayan bayrakla UTS #46'dır; bu sayfa bu kuralların ne yaptığını söyler, onları uyguluyormuş gibi davranmaz ve uyguladığı katlama — NFC, sonra küçük harf, sonra RFC 3492 — bir ad gönderilmeden önce bir istemcinin gerçekleştirdiği kısa dizinin aynısıdır. Bu aile sayfalardaki şekil grupları, komut dosyası aralıkları ve görünmez karakter tabloları aile için elle yazılmıştır: standartlar, kendiniz okuyabilmeniz için adlandırılmıştır ve onlardan hiçbir metin burada çoğaltılmaz.

Sorular

Karışık alfabeli bir ad her zaman bir saldırı mıdır?

Hayır, ve bunu öyle ele almak önemli bir biçimde yanlış olurdu. Japonca, aynı sözcükte Han karakterleri ve Kana yazar; Korece ise Hangul içinde Han karakterleri yazar. Olağan bir açıklaması olmayan şey, tek bir etikette Latin ile Kiril ya da Yunanca'nın karışmasıdır, çünkü bu alfabeler hiçbir dilde birlikte kullanılmaz; sayfa her karışımı bayraklamak yerine bu çizgiyi çizer. Yukarıdaki durum tablosundaki Japonca ve Korece satırların temiz çıkmasının nedeni budur.

O hâlde neden benim kendi adım orta olarak geliyor?

Büyük olasılıkla, ana bilgisayar adı alfabesinin içermediği tek bir karakter içerdiği için — bir alt çizgi, bir boşluk, uyumluluk karakteri olarak yazılmış bir aksan — ve bu, ad olduğu gibi gönderilemediği için orta düzeydir. Orta, "buna bir bakılmalı" demektir, "bu bir sahtekârlıktır" değil. Düzeyin altındaki bulgu tam karakteri ve konumunu adlandırır.

Sayfa bana bir adın tehlikeli olup olmadığını, kayıtlı olup olmadığını ya da erişilebilir olup olmadığını söyler mi?

Hayır, üçünde de. Ağa hiçbir zaman dokunmaz ve hiçbir şeyi çözümlemez; bu yüzden bir adın var olup olmadığını ya da kime ait olduğunu bilemez ve bir sitenin ne yaptığı hakkında bilerek hiçbir şey söylemez. Kendiniz denetleyebileceğiniz daha dar bir soruyu yanıtlar: bu ad hangi karakterlerden oluşuyor ve benzer karakterleri taklit ettikleri harflere katlarsam ne yazar?

Adım Çince ve sayfa en üst düzey alan adının ASCII olmadığını söylüyor. Bir yanlışlık mı var?

Hiçbir şey yanlış değil. Çin üst düzey alan adı kendi xn-- etiketi olarak dolaşır, bu yüzden adın son etiketi kodlanmış biçiminde yazılır ve sayfa bunu not eder. Notlar bir sorun değil bir olguyu tarif ettikleri için bir düzey taşımazlar.

Okunuyor olarak satırı neden bazen yazdığım adın aynısını gösteriyor?

Çünkü sayfa, katlamanın gerçekten bir şeyi değiştirdiği durumlarda katlanmış bir okuma gösterir. Adın her karakteri zaten taklit ettiği şekilse, katlanmış okuma ve ad aynı dizgidir ve size söylenecek bir şey yoktur.

Bir A-etiketi ve bir U-etiketi nedir?

Bir A-etiketi, dolaşan ASCII yazımıdır: xn--fiq228c. Bir U-etiketi ise aynı etiketin ait olduğu alfabede yazılmış hâlidir: 中文. Bunlar tek bir etiketin iki yazımıdır ve sayfa çözdüğü her etiket için ikisini de gösterir, böylece kodlanmış bir etiketin neyi gizlediğini görebilirsiniz.