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

Настоящий документ содержит технические рекомендации для разработчиков программного обеспечения, в котором планируется внедрение поддержки или уже реализована поддержка интернационализированных доменных имен, зарегистрированных в кириллическом домене верхнего уровня .РФ, и/или адресов электронной почты с их использованием.

Цель документа – обеспечить разработчиков необходимыми данными для корректного внедрения принципов универсального принятия в их программные продукты с учетом специфики доменных имен в ДВУ .РФ и соответствующих адресов электронной почты. Группой управления по универсальному принятию (UASG) разработаны следующие базовые принципы:

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

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

I. Для поддержки интернационализированных доменных имен

Рекомендации этого раздела применимы к интернационализированным доменным именам, зарегистрированным в домене верхнего уровня .РФ.

1. Принятие доменного имени

    1. Передача программному обеспечению доменного имени как пользователем с помощью GUI, так и через API, должна быть возможна как в формате U-метки (Unicode), так и в формате A-метки (Punycode).
    2. Если передача пользователем доменного имени осуществляется с помощью GUI в формате A-метки, рекомендуется преобразовать его в U-метку средствами предобработки данных.

2. Проверка доменного имени

  1. Перед проведением рекомендуется привести доменное имя к нижнему регистру и провести нормализацию по форме С (NFC).
  2. Доменное   имя   должно    соответствовать   следующим   требованиям   (включая требования «Правил регистрации доменных имен в доменах .RU и .РФ»):
    • Доменное имя в зоне РФ может содержать дефис, цифры или символы русского алфавита: (а-я, А-Я, 0-9, -);
    • Доменное имя может начинаться и заканчиваться цифрой или буквой, не может дефисом;
    • Перед проверкой длины доменное имя требуется преобразовать из U-метки в A-метку;
    • Доменное имя может иметь длину домена второго уровня от 2 до 63 символов в A-метке;
    • Доменное имя может иметь длину домена третьего и далее уровней от 1 до 63 символов в A-метке;
    • Общая длина доменного имени может быть от 11 до 255 символов в А-метке.
  1. В доменном имени не допускаются упрощающие преобразования, например преобразование буквы «ё» в букву «е».
  2. Рекомендуется проверять существование доменного имени: делегирование проверяется при помощи DNS-запроса, наличие регистрации - при помощи сервиса WHOIS.

3. Хранение доменного имени

  1. Доменное имя должно храниться в БД или в файлах в виде U-метки в кодировке UTF-8.
  2. Доменное имя может храниться в виде A-метки в дополнение к U-метке, при этом необходимо проверять соответствие обеих меток при изменении одной из них.

4. Обработка доменного имени

  1. Любые операции с доменными именами должны производиться в кодировке UTF- 8.

5. Отображение доменного имени

  1. Доменное имя должно отображаться в графическом интерфейсе программного обеспечения в виде U-метки.
  2. Доменное имя может отображаться в виде А-метки только в том случае, когда оно идет в дополнение к соответствующему доменному имени в виде U-метки.
  3. При отображении ошибок, связанных с доменным именем, рекомендуется выделять уровень доменного имени, с которым связана ошибка.

6. Оформление кода

  1. В имена функций и глобальных переменных программного обеспечения, используемых для работы с доменными именами в домене .РФ, рекомендуется добавлять idn_rf.

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

Рекомендации этогораздела применимы к интернационализированным адресам электронной почты, имеющим в своем составе доменные имена в домене верхнего уровня .РФ.

1. Принятие адреса электронной почты

  1. Доменная часть адреса электронной почты должна передаваться в соответствии с п. 1 раздела I.
  2. Локальная часть адреса электронной почты должна передаваться только в виде U- метки.

2. Проверка адреса электронной почты

  1. Доменная часть адреса электронной почты должна проверяться в соответствии с п. 2 раздела I.
  2. Перед проведением проверок рекомендуется привести локальную часть адреса электронной почты к нижнему регистру и провести нормализацию по форме С (NFC).
  3. Локальная часть адреса электронной почты должна соответствовать следующим требованиям:
    • Локальная часть адреса электронной почты может содержать цифры (от 0 до 9);
    • Локальная часть адреса электронной почты может содержать либо только латинские символы (a-z, A-Z), либо только символы русского алфавита (а-я, А-Я), но не может содержать латинские и русские символы одновременно;
    • Длина локальной части адреса электронной почты может быть от 1 до 64 символов;
    • В локальной части адреса электронной почты не допускаются упрощающие преобразования, например буквы «ё» в букву «е».
  1. В локальной части адреса электронной почты не рекомендуется использовать специальные символы, за исключением точки (.), нижнего подчеркивания (_) и дефиса (-).
  2. Локальную часть адреса электронной почты не рекомендуется начинать и заканчивать любым специальным символом или иметь в ней два специальных символа подряд.

3. Хранение адреса электронной почты

  1. Доменная часть адреса электронной почты должна храниться в соответствии с п. 3 раздела I
  2. Локальная часть адреса электронной почты должна храниться в виде U-метки в кодировке UTF-8.

4. Обработка адреса электронной почты

  1. Любые операции с адресами электронной почты рекомендуется производить в кодировке UTF-8.

5. Отображение адреса электронной почты

  1. Доменная часть адреса электронной почты должна отображаться в соответствии с п. 5 раздела I.
  2. Локальная часть адреса электронной почты должна отображаться в виде U-метки.
  3. При отображении ошибок, связанных с адресом электронной почты, рекомендуется выделять локальную часть адреса, если ошибка в ней, или уровень доменного имени, если ошибка в доменной части.

6. Оформление кода

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

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

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

  • Группа управления по универсальному принятию Universal Acceptance Steering Group, UASG
    https://uasg.tech/


Скачать документ в формате PDF