ñandú.com.arxn--and-6ma2c.com.armünchen.dexn--mnchen-3ya.decontacto@correo.españa.escontacto@correo.xn--espaa-rta.eshttps://日本語.jp/ページhttps://xn--wgv71a119e.jp/%E3%83%9A%E3%83%BC%E3%82%B8аррӏе.comxn--80ak6aa92e.comМетка целиком написана кириллическими или греческими буквами, которые выглядят как латинские. Она может выдавать себя за известный домен: проверьте форму xn--, прежде чем доверять ссылке.
Кодирует или декодирует любой текст чистым алгоритмом Punycode, без префикса xn-- и без нормализации доменов. Полезно для отладки собственной реализации.
maana-ptaКак это работает
DNS принимает только буквы ASCII, цифры и дефисы, поэтому домен вроде ñandú.com.ar не может передаваться как есть. Интернационализированные домены (IDN) решают это с помощью Punycode (RFC 3492): каждая метка с символами вне ASCII кодируется алгоритмом, который сохраняет обычные буквы и дописывает в конец позиции особых, а перед ней ставится префикс xn--. Так ñandú превращается в xn--and-6ma2c.
Перед кодированием IDNA нормализует имя: переводит его в нижний регистр, унифицирует формы Unicode и преобразует альтернативные точки, например японскую 。. Инструмент использует то же сопоставление (UTS #46), что и браузер при открытии адреса, поэтому результат совпадает с тем, что в итоге запрашивается у DNS. В адресах почты преобразуется только домен, в URL — только хост.
Кроме того, он разбирает каждую метку с её длиной и используемыми системами письма и предупреждает, если домен смешивает алфавиты или написан кириллическими либо греческими буквами, идентичными латинским: на этом строятся омографические атаки, когда ссылка выглядит как ссылка на известный сайт.
Примеры
ñandú.com.arxn--and-6ma2c.com.arМеняется только метка с особыми символами; com и ar остаются прежними. Именно эту форму нужно указывать в DNS и в SAN сертификата.faß.dexn--fa-hia.deВ IDNA2008 немецкая ß — допустимая буква и кодируется. По прежнему стандарту она превращалась в ss и вела на fass.de — другой домен, поэтому некоторые старые системы разрешают не то имя.аррӏе.comxn--80ak6aa92e.comОмограф, опубликованный Xudong Zheng в 2017 году: пять кириллических букв, которые выглядят точь-в-точь как apple. С тех пор Chrome и Firefox показывают такие домены в форме xn--.пример.рфxn--e1afmkfd.xn--p1aiДомены верхнего уровня тоже могут быть интернационализированными: .рф — кириллический домен России, а в DNS он записывается как xn--p1ai.Сценарии использования
- Получить форму xn-- домена на кириллице или с диакритикой, чтобы прописать записи в DNS, в конфигурации nginx или Apache или в SAN сертификата.
- Понять, какой реальный домен скрывается за xn--, встреченным в логе, в отчёте о фишинге или в адресной строке браузера.
- Проверить подозрительную ссылку на кириллические или греческие буквы, имитирующие латинские.
- Преобразовать домен интернационализированного адреса электронной почты для сервера, который не поддерживает SMTPUTF8.
- Убедиться, что после кодирования международный домен не превышает 63 символов на метку.
Часто задаваемые вопросы
Что означает префикс xn--?
Это префикс ACE (ASCII Compatible Encoding), который показывает, что метка записана в Punycode. Метки с дефисами на третьей и четвёртой позициях зарезервированы для таких префиксов, поэтому регистраторы не позволяют создать домен, начинающийся с xn--, если это не допустимый IDN.
Какую форму использовать в DNS, на веб-сервере и в сертификате?
Форму ASCII с xn-- во всех технических местах: в записях DNS, server_name в nginx, ServerName в Apache, SAN сертификата и заголовках Host. Форма Unicode нужна только для показа людям; браузеры преобразуют её перед запросом.
Что такое омографическая атака?
Это регистрация домена, который выглядит так же, как другой, за счёт букв другого алфавита, например кириллической а вместо латинской. Браузеры показывают форму xn--, когда метка смешивает системы письма или похожа на известный домен. Если ссылка выглядит обычно, но её форма ASCII начинается с xn--, будьте осторожны.
Можно ли использовать нелатинские буквы в адресе электронной почты?
В домене — да, и его можно преобразовать в xn-- для любого сервера. С частью до знака @ всё иначе: символы не из ASCII требуют, чтобы все серверы на пути поддерживали SMTPUTF8 (RFC 6531), и у неё нет эквивалентной формы Punycode.
Почему мой домен с заглавными буквами изменился?
Доменные имена нечувствительны к регистру, и IDNA переводит всё в нижний регистр перед кодированием: MÜNCHEN.de и münchen.de — один и тот же домен, xn--mnchen-3ya.de. Чистый Punycode, напротив, сохраняет заглавные буквы, поэтому конвертер без префикса даёт другие результаты.