Рекомендации по внедрению в программном обеспечении поддержки доменных имен и адресов почты c использованием символов кириллицы: различия между версиями

Материал из вики.поддерживаю.рф
Перейти к навигации Перейти к поиску
(Новая страница: «= Рекомендации по внедрению в программном обеспечении поддержки доменных имен и адресов электронной почты c использованием символов кириллицы = <blockquote>Настоящий документ содержит технические рекомендации для разработчиков программного обеспечения,...»)
 
 
(не показано 13 промежуточных версий этого же участника)
Строка 1: Строка 1:
= Рекомендации по внедрению в программном обеспечении поддержки доменных имен и адресов электронной почты c использованием символов кириллицы =
= Рекомендации по внедрению в программном обеспечении поддержки доменных имен и адресов электронной почты c использованием символов кириллицы =


<blockquote>Настоящий документ содержит технические рекомендации для разработчиков программного обеспечения, в котором планируется внедрение поддержки или уже реализована поддержка кириллических доменных имен и/или адресов электронной почты с использованием российских доменов верхнего уровня (в частности, .РФ, .SU, .ДЕТИ, .МОСКВА,
Настоящий документ содержит технические рекомендации для разработчиков программного обеспечения, в котором планируется внедрение поддержки или уже реализована поддержка кириллических доменных имен и/или адресов электронной почты с использованием российских доменов верхнего уровня (в частности, .РФ, .SU, .ДЕТИ, .МОСКВА,


.РУС).
.РУС).
Строка 8: Строка 8:


Группой управления по универсальному принятию (UASG<sup>1</sup>) определены следующие базовые принципы:
Группой управления по универсальному принятию (UASG<sup>1</sup>) определены следующие базовые принципы:
</blockquote>
 
# Принятие — получение доменного имени или адреса электронной почты в виде строки символов из пользовательского интерфейса, файла или API, используемого программным обеспечением;
# Принятие — получение доменного имени или адреса электронной почты в виде строки символов из пользовательского интерфейса, файла или API, используемого программным обеспечением;
# Проверка (или валидация) – является ли введенная информация допустимой;
# Проверка (или валидация) – является ли введенная информация допустимой;
Строка 15: Строка 15:
# Отображение – правильно ли отображаются в пользовательском интерфейсе программного обеспечения доменные имена и адреса электронной почты.
# Отображение – правильно ли отображаются в пользовательском интерфейсе программного обеспечения доменные имена и адреса электронной почты.


<blockquote>Настоящий документ разработан в соответствии с указанными пятью принципами универсального принятия и включают в себя следующие рекомендации:
Настоящий документ разработан в соответствии с указанными пятью принципами универсального принятия и включают в себя следующие рекомендации:
</blockquote>
 
= Для поддержки доменных имен с символами кириллицы =
== Для поддержки доменных имен с символами кириллицы ==


# Принятие доменного имени
# Принятие доменного имени
Строка 25: Строка 25:
## При регистрации доменных имен с символами кириллицы рекомендуется соблюдать следующие требования:
## При регистрации доменных имен с символами кириллицы рекомендуется соблюдать следующие требования:
### Любое интернационализированное доменное имя должно соответствовать положениям стандарта IDNA 2008.
### Любое интернационализированное доменное имя должно соответствовать положениям стандарта IDNA 2008.
 
### Перед проведением проверок доменного имени рекомендуется привести доменное имя к нижнему регистру и провести нормализацию NFC<sup>4</sup>.
<blockquote><sup>1</sup> Universal Acceptance Steering Group, [https://uasg.tech/ ''https://uasg.tech/'']
### Доменное имя может содержать кириллические символы, а также дефис (-) и цифры (0-9). Перечень допустимых символов должен быть взят из IDN таблицы соответствующего ДВУ или, при отсутствии таковой, из правил Регистрации соответствующего ДВУ;
 
### Использовать символы, отличные от перечисленных в пункте 2.1.3., в одной метке доменного имени рекомендуется запрещать.
<sup>2</sup> U-метка – это метка интернационализированного доменного имени, состоящая из Юникод символов.
###Рекомендуется также предпринимать усилия для исключения возможности омоглифических атак (выдачи доменного имени за другое на основе внешней схожести начертания символов);
 
### Доменное имя может начинаться и заканчиваться цифрой или буквой, не может дефисом. Дефис в U-метке не может содержаться одновременно в 3 и 4 позициях;
<sup>3</sup> A-метка – это представление метки интернационализированного доменного имени в ASCII-совместимой кодировке (ACE). A-метки всегда начинаются с префикса ACE «xn--». A-метку можно преобразовать в U-метку и обратно без потери информации.
### Перед проверкой длины доменное имя требуется преобразовать из U-метки в A-метку;
</blockquote>
### Доменное имя может иметь длину домена второго и далее уровней от 1 до 63 октетов. Длину интернационализированного доменного имени в символах необходимо измерять в A-метке;
# Перед проведением проверок доменного имени рекомендуется привести доменное имя к нижнему регистру и провести нормализацию NFC<sup>4</sup>.
### Общая длина доменного имени не может превышать 255 символов в А-метке.
# Доменное имя может содержать кириллические символы, а также дефис (-) и цифры (0-9). Перечень допустимых символов должен быть взят из IDN таблицы соответствующего ДВУ или, при отсутствии таковой, из правил Регистрации соответствующего ДВУ;
## Для существующего доменного имени рекомендуется проверять его делегирование при помощи DNS-запроса.<br>В отдельных случаях возможно проведение дополнительной проверки существования домена верхнего уровня, для которой рекомендуется использовать регулярно обновляемый список доменов верхнего уровня, предоставляемый IANA<sup>5</sup>.
# Использовать символы, отличные от перечисленных в пункте 2.1.3., в одной метке доменного имени рекомендуется запрещать.
 
<blockquote>Рекомендуется также предпринимать усилия для исключения возможности омоглифических атак (выдачи доменного имени за другое на основе внешней схожести начертания символов);
</blockquote>
# Доменное имя может начинаться и заканчиваться цифрой или буквой, не может дефисом. Дефис в U-метке не может содержаться одновременно в 3 и 4 позициях;
# Перед проверкой длины доменное имя требуется преобразовать из U-метки в A-
 
<blockquote>метку;
</blockquote>
# Доменное имя может иметь длину домена второго и далее уровней от 1 до 63 октетов. Длину интернационализированного доменного имени в символах необходимо измерять в A-метке;
# Общая длина доменного имени не может превышать 255 символов в А-метке.
 
# Для существующего доменного имени рекомендуется проверять его делегирование при помощи DNS-запроса.
 
В отдельных случаях возможно проведение дополнительной проверки существования домена верхнего уровня, для которой рекомендуется использовать регулярно обновляемый список доменов верхнего уровня, предоставляемый IANA<sup>5</sup>.
 
# Хранение доменного имени
# Хранение доменного имени
## Доменное имя должно храниться в БД или в файлах в кодировке Юникод (UTF-8).
## Доменное имя должно храниться в БД или в файлах в кодировке Юникод (UTF-8).
## Доменное имя может храниться в виде A-метки в дополнение к U-метке, при этом необходимо проверять соответствие обеих меток при изменении одной из них.
## Доменное имя может храниться в виде A-метки в дополнение к U-метке, при этом необходимо проверять соответствие обеих меток при изменении одной из них.
# Обработка доменного имени
# Обработка доменного имени
## Любые операции с доменными именами должны производиться в кодировке Юникод
## Любые операции с доменными именами должны производиться в кодировке Юникод(UTF-8).
 
## При поиске среди набора данных, включающего доменные имена, рекомендуется обеспечивать возможность нахождения элементов по запросу, где каждая метка доменного имена может быть указана как в форме A-метки, так и в форме U-метки.
(UTF-8).
 
# При поиске среди набора данных, включающего доменные имена, рекомендуется обеспечивать возможность нахождения элементов по запросу, где каждая метка доменного имена может быть указана как в форме A-метки, так и в форме U-метки.
 
# Отображение доменного имени
# Отображение доменного имени
## Доменное имя должно отображаться в графическом интерфейсе программного обеспечения в кодировке Юникод (UTF-8).
## Доменное имя должно отображаться в графическом интерфейсе программного обеспечения в кодировке Юникод (UTF-8).
Строка 65: Строка 45:
## При отображении ошибок, связанных с доменным именем, рекомендуется выделять соответствующую метку доменного имени, с которой связана ошибка.
## При отображении ошибок, связанных с доменным именем, рекомендуется выделять соответствующую метку доменного имени, с которой связана ошибка.


= II. Для поддержки адресов электронной почты с символами кириллицы =
== Для поддержки адресов электронной почты с символами кириллицы ==
 
<blockquote><sup>4</sup> Формы нормализации Юникод - [http://www.unicode.org/reports/tr15/ ''http://www.unicode.org/reports/tr15/'']


<sup>5</sup> http://data.iana.org/TLD/tlds-alpha-by-domain.txt
</blockquote>
# Принятие адреса электронной почты
# Принятие адреса электронной почты
## Доменная часть адреса электронной почты должна передаваться в соответствии с п. 1
## Доменная часть адреса электронной почты должна передаваться в соответствии с п. 1 раздела I.
 
## Локальная часть адреса электронной почты должна передаваться только в кодировке Юникод (UTF-8).
раздела I.
 
# Локальная часть адреса электронной почты должна передаваться только в кодировке Юникод (UTF-8).
 
# Проверка адреса электронной почты
# Проверка адреса электронной почты
## Доменная часть<sup>6</sup> адреса электронной почты должна проверяться в соответствии с п. 2
## Доменная часть<sup>6</sup> адреса электронной почты должна проверяться в соответствии с п. 2 раздела I.
 
## Локальная часть<sup>7</sup> интернационализированного адреса электронной почты должна соответствовать требованиям стандарта EAI.
раздела I.
## При создании (регистрации) нового адреса электронной почты в локальной части рекомендуется соблюдать следующие принятые нормы:
 
### Перед проведением проверок рекомендуется привести локальную часть адреса электронной почты к нижнему регистру и провести нормализацию по форме NFC. При необходимости возможно использование нормализации по форме NFKC<sup>8</sup>.
# Локальная часть<sup>7</sup> интернационализированного адреса электронной почты должна соответствовать требованиям стандарта EAI.
### Локальная часть адреса электронной почты может содержать латинские символы (a-z), кириллические символы (а-я), цифры (от 0 до 9);
# При создании (регистрации) нового адреса электронной почты в локальной части рекомендуется соблюдать следующие принятые нормы:
### Смешивать кириллические и латинские символы, указанные в пункте 2.3.2, в локальной части адреса электронной почты рекомендуется запрещать;
## Перед проведением проверок рекомендуется привести локальную часть адреса электронной почты к нижнему регистру и провести нормализацию по форме NFC. При необходимости возможно использование нормализации по форме NFKC<sup>8</sup>.
### В локальной части адреса электронной почты не рекомендуется использовать специальные символы, за исключением точки (.), нижнего подчеркивания (_) и дефиса (-). В отдельных случаях допустимо использовать специальный символ плюс (+).
## Локальная часть адреса электронной почты может содержать латинские символы
### Локальную часть адреса электронной почты не рекомендуется начинать и заканчивать любым специальным символом или иметь в ней два специальных символа подряд.
 
### Длина локальной части адреса электронной почты может быть от 1 до 64 символов.
<blockquote>(a-z), кириллические символы (а-я), цифры (от 0 до 9);
</blockquote>
# Смешивать кириллические и латинские символы, указанные в пункте 2.3.2, в локальной части адреса электронной почты рекомендуется запрещать;
# В локальной части адреса электронной почты не рекомендуется использовать специальные символы, за исключением точки (.), нижнего подчеркивания (_) и дефиса (-). В отдельных случаях допустимо использовать специальный символ плюс (+).
# Локальную часть адреса электронной почты не рекомендуется начинать и заканчивать любым специальным символом или иметь в ней два специальных символа подряд.
# Длина локальной части адреса электронной почты может быть от 1 до 64 символов.


# Хранение адреса электронной почты
# Хранение адреса электронной почты
## Доменная часть адреса электронной почты должна храниться в соответствии с п. 3
## Доменная часть адреса электронной почты должна храниться в соответствии с п. 3 раздела I.
 
## Локальная часть адреса электронной почты должна храниться в кодировке Юникод (UTF-8).
раздела I.
 
# Локальная часть адреса электронной почты должна храниться в кодировке Юникод
 
(UTF-8).
 
# Обработка адреса электронной почты
# Обработка адреса электронной почты
## Любые операции с адресами электронной почты рекомендуется производить в кодировке Юникод (UTF-8).
## Любые операции с адресами электронной почты рекомендуется производить в кодировке Юникод (UTF-8).
## При поиске среди набора данных, включающего адреса электронной почты, рекомендуется обеспечивать возможность нахождения элементов по запросу, где любая метка в доменной части может быть указана как в форме A-метки, так и в форме U-метки.
## При поиске среди набора данных, включающего адреса электронной почты, рекомендуется обеспечивать возможность нахождения элементов по запросу, где любая метка в доменной части может быть указана как в форме A-метки, так и в форме U-метки.
# Отображение адреса электронной почты
# Отображение адреса электронной почты
## Доменная часть адреса электронной почты должна отображаться в соответствии с п. 5 раздела I.
## Локальная часть адреса электронной почты должна отображаться в кодировке Юникод (UTF-8).
## При отображении ошибок, связанных с адресом электронной почты, рекомендуется выделять локальную часть адреса, если ошибка в ней, или соответствующую метку доменного имени, если ошибка в доменной части.


<blockquote><sup>6</sup> Доменная часть адреса электронной почты – это часть после символа @, содержащая доменное имя.
== Список использованных источников ==
 
<sup>7</sup> Локальная часть адреса электронной почты – это часть до символа @, содержащая наименование почтового адреса.


<sup>8</sup> Формы нормализации Юникод - [http://www.unicode.org/reports/tr15/ ''http://www.unicode.org/reports/tr15/'']
Настоящий документ разработан на основе приведенных ниже материалов:
</blockquote>
# Доменная часть адреса электронной почты должна отображаться в соответствии с п. 5


раздела I.
* Introduction to Universal Acceptance,<br>[https://uasg.tech/wp-content/uploads/documents/UASG007-en-digital.pdf https://uasg.tech/wp-content/uploads/documents/UASG007-en-digital.pdf]
 
* Email Address Internationalization – Technical Perspective,<br>[https://uasg.tech/wp-content/uploads/documents/UASG019B-en-digital.pdf https://uasg.tech/wp-content/uploads/documents/UASG019B-en-digital.pdf]
# Локальная часть адреса электронной почты должна отображаться в кодировке Юникод
* Universal Acceptance Readiness Framework,<br>[https://uasg.tech/wp-content/uploads/documents/UASG026-en-digital.pdf https://uasg.tech/wp-content/uploads/documents/UASG026-en-digital.pdf]
 
* RFC 5321 - Simple Mail Transfer Protocol,<br>[https://tools.ietf.org/html/rfc5321 https://tools.ietf.org/html/rfc5321]
(UTF-8).
* RFC 5322 - Internet Message Format,<br>[https://tools.ietf.org/html/rfc5322 https://tools.ietf.org/html/rfc5322]
 
* RFC 1035 - Domain Names - Implementation And Specification,<br>[https://tools.ietf.org/html/rfc1035 https://tools.ietf.org/html/rfc1035]
# При отображении ошибок, связанных с адресом электронной почты, рекомендуется выделять локальную часть адреса, если ошибка в ней, или соответствующую метку доменного имени, если ошибка в доменной части.
* RFC 3492 - Punycode: A Bootstring encoding of Unicode for Internationalized Domain Names in Applications,<br>
 
[https://www.ietf.org/rfc/rfc3492.txt https://www.ietf.org/rfc/rfc3492.txt]
= III. Список использованных источников =
* Стандарт Internationalized Domain Names for Applications <br>[https://www.ietf.org/rfc/rfc5890.txt https://www.ietf.org/rfc/rfc5890.txt]<br>[https://www.ietf.org/rfc/rfc5891.txt https://www.ietf.org/rfc/rfc5891.txt]<br>[https://www.ietf.org/rfc/rfc5892.txt https://www.ietf.org/rfc/rfc5892.txt]<br>[https://www.ietf.org/rfc/rfc5893.txt https://www.ietf.org/rfc/rfc5893.txt]<br>[https://www.ietf.org/rfc/rfc5894.txt https://www.ietf.org/rfc/rfc5894.txt]<br>[https://www.ietf.org/rfc/rfc5895.txt https://www.ietf.org/rfc/rfc5895.txt]
 
* Стандарт EAI, интернационализации электронной почты [https://tools.ietf.org/html/rfc6530 https://tools.ietf.org/html/rfc6530]<br>[https://tools.ietf.org/html/rfc6531 https://tools.ietf.org/html/rfc6531] [https://tools.ietf.org/html/rfc6532 https://tools.ietf.org/html/rfc6532] [https://tools.ietf.org/html/rfc6533 https://tools.ietf.org/html/rfc6533]
<blockquote>Настоящий документ разработан на основе приведенных ниже материалов:
* Юникод консорциум, [https://home.unicode.org/ https://home.unicode.org/]
</blockquote>
* Группа управления по универсальному принятию (Universal Acceptance Steering Group, UASG), [https://uasg.tech/ https://uasg.tech/]
* Introduction to Universal Acceptance,
* Поддерживаю.РФ - проект развития экосистемы поддержки доменных имен и почтовых адресов на национальных языках,<br>https://поддерживаю.рф
 
* Формы нормализации Юникод,<br>[http://www.unicode.org/reports/tr15/ http://www.unicode.org/reports/tr15/]
<blockquote>[https://uasg.tech/wp-content/uploads/documents/UASG007-en-digital.pdf ''https://uasg.tech/wp-content/uploads/documents/UASG007-en-digital.pdf'']
* Блоки символов Юникод,<br>[https://www.unicode.org/charts/ https://www.unicode.org/charts/]
</blockquote>
* Email Address Internationalization – Technical Perspective, [https://uasg.tech/wp-content/uploads/documents/UASG019B-en-digital.pdf ''https://uasg.tech/wp-content/uploads/documents/UASG019B-en-digital.pdf'']
* Universal Acceptance Readiness Framework,
 
<blockquote>[https://uasg.tech/wp-content/uploads/documents/UASG026-en-digital.pdf ''https://uasg.tech/wp-content/uploads/documents/UASG026-en-digital.pdf'']
</blockquote>
* RFC 5321 - Simple Mail Transfer Protocol, [https://tools.ietf.org/html/rfc5321 ''https://tools.ietf.org/html/rfc5321'']
* RFC 5322 - Internet Message Format, [https://tools.ietf.org/html/rfc5322 ''https://tools.ietf.org/html/rfc5322'']
* RFC 1035 - Domain Names - Implementation And Specification, [https://tools.ietf.org/html/rfc1035 ''https://tools.ietf.org/html/rfc1035'']
* RFC 3492 - Punycode: A Bootstring encoding of Unicode for Internationalized Domain Names in Applications,
 
<blockquote>[https://www.ietf.org/rfc/rfc3492.txt ''https://www.ietf.org/rfc/rfc3492.txt'']
</blockquote>
* Стандарт Internationalized Domain Names for Applications [https://www.ietf.org/rfc/rfc5890.txt ''https://www.ietf.org/rfc/rfc5890.txt''] [https://www.ietf.org/rfc/rfc5891.txt ''https://www.ietf.org/rfc/rfc5891.txt''] [https://www.ietf.org/rfc/rfc5892.txt ''https://www.ietf.org/rfc/rfc5892.txt''] [https://www.ietf.org/rfc/rfc5893.txt ''https://www.ietf.org/rfc/rfc5893.txt''] [https://www.ietf.org/rfc/rfc5894.txt ''https://www.ietf.org/rfc/rfc5894.txt''] [https://www.ietf.org/rfc/rfc5895.txt ''https://www.ietf.org/rfc/rfc5895.txt'']
* Стандарт EAI, интернационализации электронной почты [https://tools.ietf.org/html/rfc6530 ''https://tools.ietf.org/html/rfc6530''] [https://tools.ietf.org/html/rfc6531 ''https://tools.ietf.org/html/rfc6531''] [https://tools.ietf.org/html/rfc6532 ''https://tools.ietf.org/html/rfc6532''] [https://tools.ietf.org/html/rfc6533 ''https://tools.ietf.org/html/rfc6533'']
* Юникод консорциум, [https://home.unicode.org/ ''https://home.unicode.org/'']
* Группа управления по универсальному принятию (Universal Acceptance Steering Group, UASG), [https://uasg.tech/ ''https://uasg.tech/'']
* Поддерживаю.РФ - проект развития экосистемы поддержки доменных имен и почтовых адресов на национальных языках, ''https://поддерживаю.рф/''
* Формы нормализации Юникод, [http://www.unicode.org/reports/tr15/ ''http://www.unicode.org/reports/tr15/'']
* Блоки символов Юникод, [https://www.unicode.org/charts/ ''https://www.unicode.org/charts/'']
* IDN таблицы кириллических доменов верхнего уровня
* IDN таблицы кириллических доменов верхнего уровня
<blockquote>.РФ - [https://www.iana.org/domains/idn-tables/tables/xn--p1ai_cyrl_1.0.txt https://www.iana.org/domains/idn-tables/tables/xn--p1ai_cyrl_1.0.txt]


<blockquote>.РФ - [https://www.iana.org/domains/idn-tables/tables/xn--p1ai_cyrl_1.0.txt ''https://www.iana.org/domains/idn-tables/tables/xn--p1ai_cyrl_1.0.txt'']
.ДЕТИ - [https://www.iana.org/domains/idn-tables/tables/xn--d1acj3b_ru_1.0.txt https://www.iana.org/domains/idn-tables/tables/xn--d1acj3b_ru_1.0.txt]
 
.ДЕТИ - [https://www.iana.org/domains/idn-tables/tables/xn--d1acj3b_ru_1.0.txt ''https://www.iana.org/domains/idn-tables/tables/xn--d1acj3b_ru_1.0.txt'']


.МОСКВА - [https://www.iana.org/domains/idn-tables/tables/xn--80adxhks_ru_1.0.txt ''https://www.iana.org/domains/idn-tables/tables/xn--80adxhks_ru_1.0.txt'']
.МОСКВА - [https://www.iana.org/domains/idn-tables/tables/xn--80adxhks_ru_1.0.txt https://www.iana.org/domains/idn-tables/tables/xn--80adxhks_ru_1.0.txt]


.РУС - [https://www.iana.org/domains/idn-tables/tables/xn--p1acf_cyrl_1.0.txt ''https://www.iana.org/domains/idn-tables/tables/xn--p1acf_cyrl_1.0.txt'']
.РУС - [https://www.iana.org/domains/idn-tables/tables/xn--p1acf_cyrl_1.0.txt https://www.iana.org/domains/idn-tables/tables/xn--p1acf_cyrl_1.0.txt]


.SU - [https://www.tcinet.ru/su/ver2_unicode.php ''https://www.tcinet.ru/su/ver2_unicode.php'']
.SU - [https://www.tcinet.ru/su/ver2_unicode.php https://www.tcinet.ru/su/ver2_unicode.php]
</blockquote>
</blockquote>

Текущая версия от 10:14, 27 июня 2022

Рекомендации по внедрению в программном обеспечении поддержки доменных имен и адресов электронной почты c использованием символов кириллицы

Настоящий документ содержит технические рекомендации для разработчиков программного обеспечения, в котором планируется внедрение поддержки или уже реализована поддержка кириллических доменных имен и/или адресов электронной почты с использованием российских доменов верхнего уровня (в частности, .РФ, .SU, .ДЕТИ, .МОСКВА,

.РУС).

Цель документа – обеспечить разработчиков необходимыми данными для корректного внедрения принципов универсального принятия в их программные продукты с учетом специфики кириллических доменных имен и соответствующих адресов электронной почты.

Группой управления по универсальному принятию (UASG1) определены следующие базовые принципы:

  1. Принятие — получение доменного имени или адреса электронной почты в виде строки символов из пользовательского интерфейса, файла или API, используемого программным обеспечением;
  2. Проверка (или валидация) – является ли введенная информация допустимой;
  3. Хранение – правильно ли она сохраняется и извлекается из базы данных (или файла с данными);
  4. Обработка – в правильном ли виде доменные имена или адреса электронной почты используются программным обеспечением для решения своих непосредственных задач;
  5. Отображение – правильно ли отображаются в пользовательском интерфейсе программного обеспечения доменные имена и адреса электронной почты.

Настоящий документ разработан в соответствии с указанными пятью принципами универсального принятия и включают в себя следующие рекомендации:

Для поддержки доменных имен с символами кириллицы

  1. Принятие доменного имени
    1. Передача программному обеспечению доменного имени как пользователем с помощью GUI, так и через API, должна быть возможна как в формате U-метки2 (Unicode), так и в формате A-метки (Punycode).
    2. Если передача пользователем доменного имени осуществляется с помощью GUI в формате A-метки3, рекомендуется преобразовать его в U-метку средствами предобработки данных.
  2. Проверка доменного имени
    1. При регистрации доменных имен с символами кириллицы рекомендуется соблюдать следующие требования:
      1. Любое интернационализированное доменное имя должно соответствовать положениям стандарта IDNA 2008.
      2. Перед проведением проверок доменного имени рекомендуется привести доменное имя к нижнему регистру и провести нормализацию NFC4.
      3. Доменное имя может содержать кириллические символы, а также дефис (-) и цифры (0-9). Перечень допустимых символов должен быть взят из IDN таблицы соответствующего ДВУ или, при отсутствии таковой, из правил Регистрации соответствующего ДВУ;
      4. Использовать символы, отличные от перечисленных в пункте 2.1.3., в одной метке доменного имени рекомендуется запрещать.
      5. Рекомендуется также предпринимать усилия для исключения возможности омоглифических атак (выдачи доменного имени за другое на основе внешней схожести начертания символов);
      6. Доменное имя может начинаться и заканчиваться цифрой или буквой, не может дефисом. Дефис в U-метке не может содержаться одновременно в 3 и 4 позициях;
      7. Перед проверкой длины доменное имя требуется преобразовать из U-метки в A-метку;
      8. Доменное имя может иметь длину домена второго и далее уровней от 1 до 63 октетов. Длину интернационализированного доменного имени в символах необходимо измерять в A-метке;
      9. Общая длина доменного имени не может превышать 255 символов в А-метке.
    2. Для существующего доменного имени рекомендуется проверять его делегирование при помощи DNS-запроса.
      В отдельных случаях возможно проведение дополнительной проверки существования домена верхнего уровня, для которой рекомендуется использовать регулярно обновляемый список доменов верхнего уровня, предоставляемый IANA5.
  3. Хранение доменного имени
    1. Доменное имя должно храниться в БД или в файлах в кодировке Юникод (UTF-8).
    2. Доменное имя может храниться в виде A-метки в дополнение к U-метке, при этом необходимо проверять соответствие обеих меток при изменении одной из них.
  4. Обработка доменного имени
    1. Любые операции с доменными именами должны производиться в кодировке Юникод(UTF-8).
    2. При поиске среди набора данных, включающего доменные имена, рекомендуется обеспечивать возможность нахождения элементов по запросу, где каждая метка доменного имена может быть указана как в форме A-метки, так и в форме U-метки.
  5. Отображение доменного имени
    1. Доменное имя должно отображаться в графическом интерфейсе программного обеспечения в кодировке Юникод (UTF-8).
    2. Доменное имя может отображаться в виде А-метки только в том случае, когда оно идет в дополнение к соответствующему доменному имени в виде U-метки.
    3. При отображении ошибок, связанных с доменным именем, рекомендуется выделять соответствующую метку доменного имени, с которой связана ошибка.

Для поддержки адресов электронной почты с символами кириллицы

  1. Принятие адреса электронной почты
    1. Доменная часть адреса электронной почты должна передаваться в соответствии с п. 1 раздела I.
    2. Локальная часть адреса электронной почты должна передаваться только в кодировке Юникод (UTF-8).
  2. Проверка адреса электронной почты
    1. Доменная часть6 адреса электронной почты должна проверяться в соответствии с п. 2 раздела I.
    2. Локальная часть7 интернационализированного адреса электронной почты должна соответствовать требованиям стандарта EAI.
    3. При создании (регистрации) нового адреса электронной почты в локальной части рекомендуется соблюдать следующие принятые нормы:
      1. Перед проведением проверок рекомендуется привести локальную часть адреса электронной почты к нижнему регистру и провести нормализацию по форме NFC. При необходимости возможно использование нормализации по форме NFKC8.
      2. Локальная часть адреса электронной почты может содержать латинские символы (a-z), кириллические символы (а-я), цифры (от 0 до 9);
      3. Смешивать кириллические и латинские символы, указанные в пункте 2.3.2, в локальной части адреса электронной почты рекомендуется запрещать;
      4. В локальной части адреса электронной почты не рекомендуется использовать специальные символы, за исключением точки (.), нижнего подчеркивания (_) и дефиса (-). В отдельных случаях допустимо использовать специальный символ плюс (+).
      5. Локальную часть адреса электронной почты не рекомендуется начинать и заканчивать любым специальным символом или иметь в ней два специальных символа подряд.
      6. Длина локальной части адреса электронной почты может быть от 1 до 64 символов.
  1. Хранение адреса электронной почты
    1. Доменная часть адреса электронной почты должна храниться в соответствии с п. 3 раздела I.
    2. Локальная часть адреса электронной почты должна храниться в кодировке Юникод (UTF-8).
  2. Обработка адреса электронной почты
    1. Любые операции с адресами электронной почты рекомендуется производить в кодировке Юникод (UTF-8).
    2. При поиске среди набора данных, включающего адреса электронной почты, рекомендуется обеспечивать возможность нахождения элементов по запросу, где любая метка в доменной части может быть указана как в форме A-метки, так и в форме U-метки.
  3. Отображение адреса электронной почты
    1. Доменная часть адреса электронной почты должна отображаться в соответствии с п. 5 раздела I.
    2. Локальная часть адреса электронной почты должна отображаться в кодировке Юникод (UTF-8).
    3. При отображении ошибок, связанных с адресом электронной почты, рекомендуется выделять локальную часть адреса, если ошибка в ней, или соответствующую метку доменного имени, если ошибка в доменной части.

Список использованных источников

Настоящий документ разработан на основе приведенных ниже материалов:

https://www.ietf.org/rfc/rfc3492.txt

.РФ - https://www.iana.org/domains/idn-tables/tables/xn--p1ai_cyrl_1.0.txt

.ДЕТИ - https://www.iana.org/domains/idn-tables/tables/xn--d1acj3b_ru_1.0.txt

.МОСКВА - https://www.iana.org/domains/idn-tables/tables/xn--80adxhks_ru_1.0.txt

.РУС - https://www.iana.org/domains/idn-tables/tables/xn--p1acf_cyrl_1.0.txt

.SU - https://www.tcinet.ru/su/ver2_unicode.php