IDN (интернационализированное доменное имя)

Основы доменов
Интернационализированное доменное имя, в котором могут использоваться символы национальных алфавитов, а не только ASCII.
← Вернуться к глоссарию

Что такое IDN?

IDN (Internationalized Domain Name, интернационализированное доменное имя) — это доменное имя, содержащее символы вне традиционного набора ASCII, использовавшегося в исходной спецификации DNS. IDN позволяют использовать домены на родных письменностях, например китайский (中文.com), арабский (مثال.com), кириллический (пример.com) и многие другие.

Почему важны IDN

Изначально DNS создавался с расчётом на английский язык, поэтому доменные имена ограничивались следующими символами:

Это исключало миллиарды людей, чьи языки не используют латинский алфавит. IDN делают интернет доступнее, позволяя использовать:

Как работают IDN: связь с Punycode

Инфраструктура DNS понимает только ASCII, поэтому IDN используют систему кодирования Punycode. При регистрации или открытии IDN происходят следующие шаги:

1. Пользователь вводит: 中文.com (китайское слово «китайский»)

2. Браузер кодирует: xn--fiq228c.com (представление в Punycode)

3. DNS выполняет разрешение: стандартный поиск ASCII

4. Браузер отображает: 中文.com (исходная форма)

Префикс «xn--» обозначает строку, закодированную в Punycode. Для пользователя это происходит прозрачно.

Примеры Punycode

Ниже показаны исходные имена IDN и их ASCII-представления в Punycode:

Исходное имя домена IDN в UnicodeASCII-представление в кодировке Punycode
münchen.dexn--mnchen-3ya.de
中文.comxn--fiq228c.com
правда.рфxn--80aafi6cg.xn--p1ai

Поддержка IDN в TLD

Поддержка IDN различается в зависимости от TLD:

Полная поддержка

Большинство современных gTLD и многие ccTLD поддерживают IDN:

Интернационализированные TLD

Некоторые TLD сами являются IDN:

Ограниченная или отсутствующая поддержка

Некоторые TLD ограничивают IDN или вовсе их не поддерживают. Всегда проверяйте поддержку IDN для нужного TLD.

Безопасность: атаки омографов

IDN создают риски безопасности из-за атак омографов, при которых визуально похожие символы разных письменностей образуют обманные домены:

apple.com   (legitimate - Latin letters)

аpple.com (attack - Cyrillic 'а' looks like Latin 'a')

Защита от атак омографов

Поведение браузера: современные браузеры показывают Punycode для подозрительных IDN вместо формы Unicode, что помогает заметить атаку. Политики реестров: некоторые реестры ограничивают сочетания письменностей, которые можно использовать в одном домене. Мониторинг доменов: инструменты вроде проверки typosquatting в DomScan могут находить зарегистрированные омографические варианты вашего бренда.

Реализация поддержки IDN

Для разработчиков инструментов работы с доменами:

Проверка

// Check if domain contains non-ASCII

function isIDN(domain) {

return /[^\x00-\x7F]/.test(domain);

}

Преобразование

// Convert to Punycode for DNS queries

const punycode = require('punycode/');

const ascii = punycode.toASCII('中文.com'); // xn--fiq228c.com

const unicode = punycode.toUnicode('xn--fiq228c.com'); // 中文.com

Запросы RDAP

Большинство серверов RDAP принимают обе формы:

# Both work

curl "https://rdap.verisign.com/com/v1/domain/xn--fiq228c.com"

curl "https://rdap.verisign.com/com/v1/domain/中文.com"

Лучшие практики

При работе с IDN:

1. Всегда храните и обрабатывайте форму Punycode внутри системы

2. Показывайте пользователям форму Unicode

3. Реализуйте обнаружение омографов в функциях безопасности

4. Перед регистрацией проверяйте правила IDN для конкретного TLD

Применяйте эти знания на практике

Используйте API DomScan для проверки доступности доменов, их состояния и многого другого.