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