Браузеры кодируют в punycode только домен или весь URL-адрес?

Я читал об атаке омографа IDN и не нашел точного указания, кодируют ли браузеры в punycode только домен или включают остальную часть URL-адреса (путь и запрос). Итак, мой вопрос: один из популярных браузеров (FF, IE, Chrome, Safari, Opera) кодирует остальную часть URL-адреса (точнее, IRI) с помощью punycode?


person Antonio Bakula    schedule 02.04.2012    source источник


Ответы (1)


Только часть имени домена закодирована с помощью punycode. Это связано с ограничениями, наложенными на допустимые символы в (традиционном) доменном имени. Часть пути URL не имеет таких ограничений, поэтому часто используется кодировка UTF-8.

person Greg Hewgill    schedule 02.04.2012
comment
Я знаю (или, по крайней мере, предполагаю), что у вас нет волшебного хрустального шара :-), и я не ожидаю окончательного ответа (или любого), но, пожалуйста, поделитесь своим мнением, каковы шансы, что какой-то браузер начинает использовать punycode в части пути? - person Antonio Bakula; 03.04.2012
comment
Я думаю, что вероятность этого очень мала, если не равна нулю. IDNA предназначена только для доменных имен. Все, что я знаю об этом, можно найти на странице Интернационализированное доменное имя. - person Greg Hewgill; 03.04.2012
comment
@Antonio В части пути URL-адреса не просто используется UTF-8, он часто использует версию с процентным кодированием байтов версии с кодировкой UTF-8 (потому что в точке, где передается путь, предполагается, что сервер принять ISO 8859-1 для фактически представленных байтов). Пуниккодирование используется только для доменного имени (и на самом деле оно используется только для отдельных частей), потому что оно обрабатывается на совершенно другом (и гораздо более раннем) этапе поиска URL. - person Donal Fellows; 09.09.2012
comment
@DonalFellows прав в том, что URL-адреса не допускают UTF-8. Однако RFC (tools.ietf.org/html/rfc3986) для URL-адресов определяет символы для быть в ASCII, а не 8859-1 (Latin1). В любом случае все данные Unicode в пути должны проходить как процентно-кодированные значения. - person ; 21.12.2015