Пять критериев универсального принятия: «Обработка»
Универсальное принятие — состояние, когда все интернет-ориентированные приложения, устройства и системы правильно и единообразно принимают, проверяют, хранят, обрабатывают и отображают все корректные доменные имена и адреса электронной почты.
Существует 5 критериев реализации универсального принятия в программном обеспечении. В серии статей мы разберем каждый из них. В этой статье расскажем о критерии «Обработка».
Что означает критерий «Обработка»
Обработка — это процесс, когда ПО (приложение или сервис) распознает и изменяет формат доменного имени и адреса электронной почты (далее в этой статье — идентификаторы) для выполнения необходимой функциональности, заложенной в этом ПО.
Задачи (функциональность) ПО могут быть разными: формирование списков идентификаторов по критериям, работа со множествами идентификаторов, поиск и сортировка идентификаторов программными средствами, а не средствами БД и т. д.
Обработка происходит всякий раз, когда ПО распознает и преобразует адрес электронной почты или доменное имя в альтернативный формат. Так, при вводе кириллического домена «пример.рф» он преобразуется в ASCII-совместимый формат Punycode xn--e1afmkfd.xn--p1ai.
Рекомендации по обработке доменных имен и адресов электронной почты
Основные рекомендации по обработке совпадают для доменных имен и адресов электронной почты. Они касаются:
- кодировки Unicode и ASCII;
- форматов UTF.
Рекомендации для корректной работы с кодировками Unicode и ASCII
Рекомендаций несколько:
- Кодовые точки Unicode, не определенные при создании приложения/сервиса, не должны нарушать штатную работу пользовательского интерфейса. Дело в том, что стандарт Unicode постоянно расширяется и в коде ПО могут быть те элементы, которые не были определены на момент создания приложения. Из-за этого могут наблюдаться сбои в работе ПО.
Например, результатом отсутствия шрифтов в базовой операционной системе могут стать не воспроизводимые на экране символы (часто для их представления используется символ «⛝»), однако такая ситуация не должна приводить к аварийному завершению работы. - Для интернационализированных доменных имен нужно использовать последние версии стандарта IDNA.
- ПО или его функция должны обрабатывать цифры так, как это предусмотрено. Например, цифры в кодировке ASCII и иероглифы, обозначающие цифры, должны обрабатываться как цифры.
- Преобразование A-меток в U-метки доменного имени должно выполняться при отображении и любой обработке, не требующей применения A-меток.
- Нужно использовать API с поддержкой Unicode.
Рекомендации по работе с форматом UTF
Любые операции с доменными именами и адресами электронной почты рекомендуется производить в кодировке UTF-8.
Кроме того, рекомендуется соблюдать еще 2 пункта:
Обновлять приложения и серверы/сервисы вместе. Это обеспечит совместимость ПО на стороне сервера и на стороне клиента. А значит, поможет избежать проблем с совместимостью и обработкой данных. Например, если клиентская часть и сервер будут использовать Unicode, то даже при вводе в веб-интерфейсе китайских символов данные будут переданы и обработаны безошибочно.
Проверять код, чтобы избежать атак переполнения буфера. Дело в том, что при преобразовании символов текстовые строки могут существенно удлиняться или сокращаться. Например, символы в ASCII кодируются одним байтом, а для кодирования символов Unicode может потребоваться два, три или даже четыре байта. Чтобы атак переполнения буфера не случалось, разработчики ПО должны учитывать изменение размера данных при их преобразовании и выделять достаточное количество памяти для хранения преобразованных данных.
Подробнее о рекомендациях можно прочитать на нашем сайте по этой ссылке. Кроме того, существуют рекомендации Российской рабочей группы по универсальному принятию — они касаются всех российских кириллических доменов верхнего уровня. Ознакомиться с ними можно здесь.
Как проводить тестирование критерия «Обработка»
Тестирование состоит из нескольких этапов проверки:
- проверки преобразования меток доменных имен и адресов электронной почты;
- проверки обработки кодовых точек Unicode;
- проверки обновления ПО;
- проверки обработки цифр в идентификаторах.
ПО удовлетворяет требованиям универсального принятия, если все его значимые функциональные элементы успешно проходят необходимые тесты:
- Тест обработки доменных имен и адресов электронной почты. Операции с идентификаторами в ПО должны производиться в кодировке UTF-8. Преобразование A-меток в U-метки в доменных именах, в том числе в адресах электронной почты, происходит при отображении и любой обработке, не требующей применения A-меток. Обработка цифр в идентификаторах происходит, как предусмотрено. То есть цифры, обозначенные словами/иероглифами в отдельных системах письменности, должны обрабатываться как цифры.
Обрабатывать доменные имена и адреса электронной почты можно неограниченным числом способов, но для этого потребуется в ПО установить правила для однозначного распознавания и классификации данных. - Тест обработки кодовых точек Unicode. Кодовые точки Unicode, не определенные при создании приложения/сервиса, должны обрабатываться так, чтобы не нарушалась штатная работа как пользовательского интерфейса, так и ПО в целом.
- Тест обновления ПО. Приложения, системное ПО и сервисы обновляются вместе.
- Тест на атаки переполнения буфера. ПО учитывает изменение размера данных при их преобразовании и выделяет достаточное количество памяти для хранения преобразованных данных.
Важно. При обработке адресов электронной почты и доменных имен важно не делать предположений, которые выходят за рамки работы системы DNS. Например, идентифицировать пользователей по принадлежности к какому-либо географическому региону на основе используемого в адресе электронной почты странового домена верхнего уровня. Или идентифицировать пользователей по принадлежности к какой-либо профессии на основе использования домена верхнего уровня для определенного профессионального сообщества. ПО, работающее с почтовыми адресами и доменными именами, должно быть универсальным и гибким в плане обработки данных.
Такое ПО считается полностью готовым к универсальному принятию в части реализации критерия «Обработка».