Пять критериев универсального принятия: Проверка
Универсальное принятие — состояние, когда все интернет-ориентированные приложения, устройства и системы правильно и единообразно принимают, проверяют, хранят, обрабатывают и отображают все корректные доменные имена и адреса электронной почты.
Что означает критерий «Проверка»
Обычно на этапе проверки ПО выполняет валидацию интернет-идентификатора. Идентификатор — это доменное имя, 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) и символы, принадлежащие к одному алфавиту. Кроме того, локальная часть не должна начинаться со спецсимволов и заканчиваться ими и не должна иметь два спецсимвола подряд.
Такое ПО считается полностью готовым к универсальному принятию в части реализации критерия «Проверка».