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

Материал из вики.поддерживаю.рф
Перейти к навигации Перейти к поиску
 
(не показано 9 промежуточных версий этого же участника)
Строка 17: Строка 17:
Настоящий документ разработан в соответствии с указанными пятью принципами универсального принятия и включают в себя следующие рекомендации:
Настоящий документ разработан в соответствии с указанными пятью принципами универсального принятия и включают в себя следующие рекомендации:


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


# Принятие доменного имени
# Принятие доменного имени
Строка 45: Строка 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/'']
* 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]
</blockquote>
* 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]
# Доменная часть адреса электронной почты должна отображаться в соответствии с п. 5
* 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]
раздела I.
* 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]
(UTF-8).
* Стандарт 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]
# При отображении ошибок, связанных с адресом электронной почты, рекомендуется выделять локальную часть адреса, если ошибка в ней, или соответствующую метку доменного имени, если ошибка в доменной части.
* Юникод консорциум, [https://home.unicode.org/ https://home.unicode.org/]
 
* Группа управления по универсальному принятию (Universal Acceptance Steering Group, UASG), [https://uasg.tech/ https://uasg.tech/]
= III. Список использованных источников =
* Поддерживаю.РФ - проект развития экосистемы поддержки доменных имен и почтовых адресов на национальных языках,<br>https://поддерживаю.рф
 
* Формы нормализации Юникод,<br>[http://www.unicode.org/reports/tr15/ http://www.unicode.org/reports/tr15/]
<blockquote>Настоящий документ разработан на основе приведенных ниже материалов:
* Блоки символов Юникод,<br>[https://www.unicode.org/charts/ https://www.unicode.org/charts/]
</blockquote>
* Introduction to Universal Acceptance,
 
<blockquote>[https://uasg.tech/wp-content/uploads/documents/UASG007-en-digital.pdf ''https://uasg.tech/wp-content/uploads/documents/UASG007-en-digital.pdf'']
</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