Система доменних імен (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, якщо домен змішує алфавіти підозрілим чином.