Что такое IDN и Punycode?

IDN (интернационализованное доменное имя) содержит символы вне ASCII, например кириллицу, ü или 中. Punycode — кодировка, которая превращает такое имя в ASCII-форму с префиксом xn--, в которой оно хранится в DNS.

DNS создавался для букв от a до z, цифр и дефиса. Чтобы поддержать другие письменности, не меняя программное обеспечение DNS, стандарт IDNA определяет преобразование: каждая метка с символами вне ASCII нормализуется и кодируется в Punycode, и к ней добавляется префикс xn--. Форму в Unicode (U-label) читают люди; форма с xn-- (A-label) — это то, что регистрируется, запрашивается и вписывается в сертификаты.

Какие символы разрешены, определяется для каждого TLD отдельно: каждый реестр публикует IDN-таблицы с допустимыми кодовыми точками, и многие объединяют или блокируют варианты, которые можно спутать друг с другом. Так, кириллические имена регистрируются в .рф, но не в .ru, а имя с турецкими буквами может быть доступно в .com.tr и .com, но не в зоне, таблицы которой этих букв не содержат.

Поскольку в разных письменностях есть похожие буквы, IDN могут использоваться для омографических атак, когда имя выглядит как известный бренд, но содержит другой символ. Поэтому браузеры показывают форму с xn--, когда метка подозрительно смешивает письменности. Электронная почта с доменами вне ASCII поддерживается менее последовательно, чем веб, и это стоит проверить, прежде чем полагаться на IDN для почты.

Пример

bücher.example   →  xn--bcher-kva.example
çiçek.example    →  xn--iek-1lab.example

Проверьте сами

IDN и Punycode: посмотрите на примере реального домена.

Отчёт о домене