- комментарий 0:
From: Alexander Venedioukhin
Date: 2025-06-02 08:13:05Z
Здравствуйте!
Вообще, сделать UTF-8 _обязательным_ в DNS - идея сильно похлеще, чем
Punycode. В DNS и так есть расщепление, уже относительно ASCII:
строчные и заглавные буквы, интерпретируемые при сравнении одинаковым
образом. Но тут, хотя бы, всё строго определяется одним конкретным
битом.
А с UTF-8 вообще было бы печально - там и длина записи символов
варьируется непредсказуемо, и способ представления одного и того же
символа возможен разный, и т.д., и т.п. - это вообще не система для
записи имён и названий, а инструмент компьютерного представления
начертания символов азбук. Никаких там "simple, boring, working
systems" быть не могло бы, а вот задач для усилий стандартизации - как
раз добавилось бы, факт. Punycode, хотя бы, позволил сохранить базовую
DNS в рабочем состоянии, в стороне от подобных упражнений, перенеся
последние на сторону приложений.
--
С уважением,
Александр Венедюхин
https://dxdt.ru/
- комментарий 1:
From: Sergey Matveev
Date: 2025-06-02 09:08:37Z
Приветствую!
*** Alexander Venedioukhin [2025-06-02 10:55]: [...]
Делать Unicode *обязательным* -- да, тоже считаю плохой идеей.
Геморрой с одной только нормализацией форм чего будет стоить.
Но, ведь факт использования punycode уже говорит о том, что
Unicode начали применять в DNS, причём без всяких там требований
(судя по беглому просмотру RFC punycode) к нормализации. Это уже
свершившийся факт (к сожалению).
А вот что даёт факт применения punycode вместо ASCII-backward compatible
UTF-8? Сравнение разных регистров букв и ненормализованных данных всё
равно как задача остаётся как и при punycode кодировании, так и при
UTF-8. Разве нет? punycode разве что не требует 8-бит clean передачи, но
проблема ли это на практие в нашем софте?
PS: кстати, да, я некорректно написал с двойным "n" в заголовке. Ошибка.
- комментарий 2:
From: Alexander Venedioukhin
Date: 2025-06-02 15:26:10Z
Нет, в DNS никакого UTF-8 нет. Есть клиентские надстройки, уровня
адресной строки браузера, в которых обрабатывается UTF-8, полученный
интерпретацией Punycode (и наоборот), но DNS это не касается. Кстати,
unicode-нормализация для IDN, конечно, описана - это в RFC 5890,
например, - но она тоже не касается DNS. Другое дело, что и эту
нормализацию далеко не всегда реализуют корректно. Тем
хуже было бы, если бы это оказалось в DNS непосредственно.
А так - в DNS осталось то же подмножество битовых строк, отображаемое в
ASCII-коды. Соответственно, нет и упомянутых дополнительных
преобразований - всё это не может повлиять на работу фундамента.
Unicode хорош там, где действительно нужен.
Что касается битов и ПО. Например, не лишённое логики и технически
очень аккуратное предложение DNS Case Randomization (когда через один
бит строчной/заглавной ASCII-буквы добавляется энтропия) - до сих пор
не везде работает на серверах. А что уж было бы ожидать от столкновения
DNS с подводной частью айсберга размером с Unicode - сложно и
представить.
- комментарий 3:
From: Sergey Matveev
Date: 2025-06-02 15:55:42Z
*** Alexander Venedioukhin [2025-06-02 18:26]:
>Нет, в DNS никакого UTF-8 нет. Есть клиентские надстройки, уровня
>адресной строки браузера, в которых обрабатывается UTF-8, полученный
>интерпретацией Punycode (и наоборот), но DNS это не касается.
Это да. На другом уровне уже всё происходит. По сути просто перенесли
весь этот ад связанный с Unicode на другой уровень.
Думаю, что у вас имеется в виду почти всё время не "UTF-8", а "Unicode",
ведь совсем не обязательно что в софте UTF-8 внутри используется. Как и
punycode bootstring кодирование (бегло глядя на него) вроде бы не
заставляет где-то промежуточно использовать UTF-8.
>unicode-нормализация для IDN, конечно, описана - это в RFC 5890
Ага, увидел, NFC.
>Другое дело, что и эту нормализацию далеко не всегда реализуют корректно.
Я поэтому и упомянул "Unicode ад" выше :-)
>А так - в DNS осталось то же подмножество битовых строк, отображаемое в
>ASCII-коды. Соответственно, нет и упомянутых дополнительных
>преобразований - всё это не может повлиять на работу фундамента.
Не, раз там всё же действительно уже есть требования к нормализации (я
RFC просто про punycode смотрел перед этим), то это будет означать
усложнение DNS софта. Этому, конечно уже не место.
Для меня то это всё равно означает что вообще нефиг было предлагать
использовать Unicode для работы с доменами, ибо это только увеличивает
поверхность атак на людей (похоже выглядящие символы, невидимые и всякое
подобное), не говоря про усложнение софта. Но...
>Unicode хорош там, где действительно нужен.
... вот да. Если кому-то очень захотелось применять его для доменов, то
пускай он особняком изолировано это делает. Никто же не принуждает софт
поддерживать IDNA.