Введение

Расширенный набор символов в протоколе URI

Интернационализированный идентификатор ресурсов (IRI) — это стандарт интернет-протокола, который развивается из протокола универсального идентификатора ресурсов (URI) за счет значительного расширения набора допустимых символов. Он был определен рабочей группой по инженерии интернета (IETF) в 2005 году в RFC 3987. В то время как URI ограничены подмножеством символов US ASCII (символы, не входящие в этот набор, должны быть преобразованы в октеты в соответствии с некоторой не указанной кодировкой символов, а затем закодированы в процентном виде), IRI могут дополнительно содержать большинство символов из универсального набора символов (Unicode/ISO 10646), включая китайские, японские, корейские и кириллические символы.

Синтаксис

IRI расширяют URI, используя универсальный набор символов, в то время как URI были ограничены ASCII, имеющим значительно меньше символов. IRI могут быть представлены последовательностью октетов, но по определению определяются как последовательность символов, поскольку IRI могут быть произнесены или написаны от руки. Для приложений и протоколов, которые не поддерживают непосредственную работу с IRI, IRI следует сначала преобразовать в Unicode, используя каноническую нормализацию состава (NFC), если он еще не в формате Unicode. Затем все не-ASCII кодовые точки в IRI должны быть закодированы в UTF-8, а полученные байты – процентно закодированы для получения допустимого URI. Пример: IRI https://en.wiktionary.org/wiki/Ῥόδος преобразуется в URI https://en.wiktionary.org/wiki/%E1%BF%AC%CF%8C%CE%B4%CE%BF%CF%82.

Кодовые точки ASCII, которые являются недопустимыми символами URI, могут быть закодированы аналогичным образом, в зависимости от реализации. Некоторые протоколы могут потребовать дополнительных преобразований, например, Punycode для DNS-меток.

Преимущества

Есть причины, по которым URI могут отображаться на разных языках; в основном, это облегчает использование для пользователей, не знакомых с латинским (A–Z) алфавитом. Если предположить, что большинству людей не составит труда ввести любые символы Unicode с клавиатуры, это может сделать систему URI более доступной.

Недостатки

Смешивание IRI и ASCII URI может значительно упростить проведение фишинговых атак, обманывающих пользователя и заставляющих его поверить, что он находится на другом сайте, чем на самом деле. Например, можно заменить ASCII-символ "a" в www.myfictionalbank.com на Unicode-символ, визуально похожий на него ("α"), получив www.myfictionαlbank.com и направив этот IRI на вредоносный сайт. Это известно как IDN-атака с использованием гомоглифов. В то время как URI не позволяет пользователям указывать веб-ресурсы, используя символы своих алфавитов, IRI не дает четкого понимания того, как получить доступ к веб-ресурсам с помощью клавиатур, не способных генерировать необходимые интернационализированные символы. Это означает, что обработка IRI сейчас осуществляется аналогично многим другим программам, которым может потребоваться использование метода ввода, отличного от клавиатуры, при работе с текстами на разных языках.