Wszystkie artykuły

Punycode: jak umiędzynarodowione domeny działają w DNS

Polski rejestr domen (NASK) umożliwił rejestrację domen .pl ze znakami diakrytycznymi — ą, ć, ę, ł, ń, ó, ś, ź, ż — dopiero w 2003 roku, i to właśnie wtedy Punycode stał się codziennym narzędziem polskich administratorów DNS, a nie tylko ciekawostką ze specyfikacji.

Litera „ł" to nie akcent, tylko osobna litera

W przeciwieństwie do „ą" czy „ę", które są literami z dodanym znakiem diakrytycznym, „ł" to odrębna litera alfabetu polskiego z własnym punktem kodowym Unicode (U+0142), niepowiązana algorytmicznie z literą „l". Dla Punycode nie ma to żadnego znaczenia — każdy znak poza ASCII jest kodowany tak samo — ale to dobry przykład tego, że „znak spoza ASCII" nie zawsze oznacza literę z akcentem.

Dlaczego nie wystarczyło po prostu dopuścić UTF-8 w DNS

Zmiana DNS tak, by natywnie akceptował UTF-8, wymagałaby jednoczesnej aktualizacji wszystkich serwerów nazw na świecie. Punycode omija ten problem: tylko przeglądarka i rejestrator muszą rozumieć kodowanie, a sama infrastruktura DNS nadal widzi wyłącznie ASCII.

Typowe zastosowania

  • Sprawdzenie, jaka rzeczywista domena kryje się za ciągiem xn--... otrzymanym w e-mailu lub linku.
  • Zamiana domeny ze znakami diakrytycznymi na formę Punycode przed wpisaniem jej w panelu DNS akceptującym tylko ASCII.
  • Diagnozowanie certyfikatów lub adresów e-mail z IDN.

Atak homograficzny dotyczy też polskich marek

Cyrylickie „а" jest nieodróżnialne od łacińskiego „a" w większości czcionek, co pozwala rejestrować domeny takie jak „аpple.com" z cyrylicką literą, imitujące legalną markę. Gdy etykieta w podejrzany sposób miesza alfabety, współczesne przeglądarki pokazują od razu surowy zapis xn-- zamiast go dekodować, właśnie po to, by uniknąć takiego oszustwa.

Wypróbuj narzędzie