Усі статті

Punycode: як домени з кирилицею працюють у DNS

Система доменних імен (DNS) історично підтримує лише обмежений набір ASCII-символів: латинські літери, цифри та дефіс. Punycode вирішує це обмеження, перетворюючи домени з символами інших алфавітів — кирилицею, ієрогліфами тощо — на ASCII-сумісний запис.

Як виглядає результат

Закодований домен завжди починається з префікса xn--, за яким іде послідовність ASCII-символів, що унікально відповідає оригінальному тексту. Наприклад, домен «приклад» перетвориться на щось на кшталт xn--80aik1a (конкретний результат залежить від самого слова). Браузер розпізнає префікс xn-- і показує користувачу читабельну версію в адресному рядку.

Навіщо це потрібно

IDN (Internationalized Domain Names) дозволяють реєструвати домени рідною мовою — це зручно для користувачів, але сама інфраструктура DNS не змінювалась, тому потрібен проміжний шар кодування. Punycode — саме такий шар: він робить міжнародні домени сумісними зі старою ASCII-only інфраструктурою без зміни протоколів.

Типові сценарії використання

  • Перевірити, який реальний домен ховається за незрозумілим рядком xn--... у листі чи посиланні (частий вектор фішингу — домени, що візуально імітують відомі бренди).
  • Підготувати домен з кирилицею для реєстрації чи налаштування DNS-запису.
  • Діагностика проблем з IDN у email-адресах чи сертифікатах.

Гомогліф-атака: коли Punycode стає загрозою

Деякі символи різних алфавітів виглядають візуально ідентично латинським літерам — наприклад, кирилична «а» невідрізнима від латинської «a» у більшості шрифтів. Зловмисники реєструють домени на кшталт «аpple.com» (з кириличною «а»), які через Punycode кодуються в унікальний xn---рядок, але виглядають як легітимний бренд. Сучасні браузери частково захищаються, показуючи сам xn---запис замість декодованого Unicode, якщо домен змішує алфавіти підозрілим чином.

Спробувати інструмент