Пять критериев универсального принятия:  Проверка

Универсальное принятие — состояние, когда все интернет-ориентированные приложения, устройства и системы правильно и единообразно принимают, проверяют, хранят, обрабатывают и отображают все корректные доменные имена и адреса электронной почты.

Что означает критерий «Проверка»

Обычно на этапе проверки ПО выполняет валидацию интернет-идентификатора. Идентификатор — это доменное имя, IP-адрес, URL и иная информация, которая позволяет идентифицировать интернет-ресурс. В случае реализации в ПО критерия универсального принятия «Проверка» идентификатором считается доменное имя и адрес электронной почты.

Проверка — это процесс валидации адреса электронной почты или доменного имени на соответствие формату, наличие допустимых символов и, когда это возможно, проверки существования доменного имени в системе доменной адресации (DNS). Иногда проверить запись в DNS невозможно, так как не всегда есть доступ к сервису разрешения (сопоставления) доменных имен (DNS Resolver).

Чтобы ПО (приложение или сервис) могло работать со всеми доступными сегодня в интернете доменными именами и адресами электронной почты, понадобится обновление методов проверки. 

Перед проведением проверки полученное доменное имя или адрес электронной почты рекомендуется привести к каноническому виду по форме нормализации С кодировки Unicode (NFC). 

Рекомендации по проверке доменных имен и адресов электронной почты

Все IDN (интернационализированные доменные имена) рекомендуется проверять на соответствие стандарту IDNA2008. Этот стандарт отвечает за интернационализированные доменные имена в приложениях. Проверка по этому стандарту позволит подтвердить правильность синтаксиса доменного имени.

Важно. Если ожидается, что вводимая строка — это существующая запись в DNS, ее можно проверить через DNS-запрос к резолверу, если есть такая возможность. Если записи о вводимой строке в DNS нет, домен верхнего уровня можно проверить на наличие в официальном регулярно обновляемом списке допустимых TLD, который поддерживается Администрацией адресного пространства интернета (IANA). 

Еще одна важная деталь: при проверке адреса электронной почты его доменная часть проверяется как обычный домен, а локальная часть обычно  проверяется только на ее размер, реже на допустимые символы, опираясь на лучшие практики. Всё дело в том, что локальная часть адреса электронной почты определяется принимающей почтовой системой, на которой этот адрес заведен, а в соответствии со стандартами в локальной части может быть использован практически любой символ.

Также для всех компонентов доменного имени или адреса электронной почты (кроме TLD, если это не IDN-домен верхнего уровня) следует использовать либо один алфавит, например русский, арабский или хань, либо тесно связанные алфавиты: японские кандзи, катакана, хирагана и ромадзи. Чтобы проверить соответствие алфавита современным требованиям, используется технический стандарт Unicode №39. Подробнее о нем — в «Механизмах безопасности Unicode».

Требования, которые предъявляются к доменным именам при проверке

Перед тем как проверять домен, нужно привести его в соответствие со всеми требованиями к доменным именам. Также рекомендуется привести доменное имя к нижнему регистру и провести нормализацию по форме С (NFC). Вот каким требованиям должно соответствовать доменное имя:

  • Доменное имя может начинаться и заканчиваться цифрой или буквой, но не дефисом.
  • Перед проверкой длины интернационализированное доменное имя требуется преобразовать из U-метки в A-метку. 
  • Доменное имя может иметь длину метки до 63 символов в ASCII-представлении.
  • Общая длина доменного имени может быть до 255 символов в АSCII-представлении. 
  • Также в доменном имени не допускаются упрощающие преобразования. Например, нельзя заменять букву «ё» на букву «е».

Требования, которые предъявляются к почтовым адресам при проверке

Перед проведением проверок рекомендуется привести локальную часть адреса электронной почты к нижнему регистру и провести нормализацию по форме С (NFC). Доменная часть email-адреса должна соответствовать требованиям, которые предъявляются к доменным именам (см. выше).

Локальную часть адреса электронной рекомендуется привести в соответствии со следующими требованиями: 

  • Локальная часть адреса электронной почты может содержать цифры от 0 до 9 и буквы одного или нескольких алфавитов в зависимости от правил почтового сервиса, где он зарегистрирован.
  • В локальной части адреса электронной почты не рекомендуется использовать специальные символы, кроме точки (.), нижнего подчеркивания (_) и дефиса (-). 
  • Размер локальной части адреса электронной почты должен быть до 64 байт. 

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

Как проводить тестирование критерия «Проверка»

Тестирование состоит из нескольких этапов:

  • проверка существования TLD в составе идентификатора с учетом IDN TLD и New gTLD;  
  • проверка на допустимую длину идентификатора;  
  • проверка использования допустимых символов в идентификаторе.

ПО удовлетворяет требованиям универсального принятия, если все его значимые функциональные элементы успешно проходят необходимые тесты:

  • Тест проверки TLD-идентификатора. Проверка делается с помощью актуального официального перечня доменов верхнего уровня IANA (см. выше). 
  • Тест проверки максимальной длины идентификатора. Идентификатор должен соответствовать требованиям к его размеру: 64 байта для локальной части адреса электронной почты (так сказано в RFC 5321); 255 символов в ASCII-представлении для доменного имени — по 63 символа на каждый уровень в нем (так сказано в RFC 1035).  
  • Тест проверки доменной части идентификатора на наличие допустимых символов. Символы, используемые в доменном имени второго уровня, должны соответствовать правилам регистрации соответствующей доменной зоны (TLD). 
  • Тест проверки локальной части адреса электронной почты на наличие допустимых символов. Лучшие практики относят к допустимым символам в адресах электронной почты дефис (-), точку (.), нижнее подчеркивание (_), цифры (от 0 до 9) и символы, принадлежащие к одному алфавиту. Кроме того, локальная часть не должна начинаться со спецсимволов и заканчиваться ими и не должна иметь два спецсимвола подряд.

Такое ПО считается полностью готовым к универсальному принятию в части реализации критерия «Проверка».