Pull to refresh

Comments 31

А почему бы просто не использовать для всех случаев канонизации, в том числе регистрации и сброса пароля, один и тот же способ канонизации — единственный вызов toLower на стороне сервера?
Наверное дело в плохой обработки им юникодных символов
Сначала канонизировать в обычные символы, а потом уже toLower. И как ни крути, toLower уже самые обычные буквы обрабатывает.
Но ведь результат всегда будет одинаковым. Поэтому и невозможно будет зарегистрировать аккаунт ᴮᴵᴳᴮᴵᴿᴰ, если уже есть bigbird, BigBird или BIGᴮᴵᴿᴰ.
А почему не хранить эти юникодные логины в базе как есть?
В статье есть пример с внешне одинаковыми, но разными символами Ω и Ω. Вероятно, таких совпадений слишком много.
Ну так в БД и будут лежать разные байтики.
Проблему я вижу только в том месте, где надо эти логины показывать (в поиске, например).
Ну вот отображение — это и есть проблема. Получатся два внешне одинаковых пользователя, что считается недопустимым.
Тогда ники K12th, k12Th, k12tH и т.п. будут разными. Впрочем, это не проблема — подумаешь, регистрозависимые логины.

Проблемы могут возникнуть потом, когда на разных устройствах или операционных системах один и тот же юникодный текст будет кодироваться разными байтами. К примеру букву Й можно закодировать одним символом как \u0419, а можно двумя как \u0415\u0308, т.е. &#x0418 + ̆. И оба этих способа кодируют одну и ту же букву, просто разными способами.

С русским алфавитом такое вряд ли случится, но вот с какими-нибудь иероглифами, которые набираются не одной кнопкой с клавиатуры, а собираются из составляющих, вполне может быть, и поэтому юникод желательно нормализовывать после пользовательского ввода, но обычно никто этим не заморачивается :)
Опять не вижу проблему — пользователь-то знает, нажимал он Й или набирал И + ̆:)

Вообще изначально проблема в том, что логин и ник — это почему-то одно и то же. Если бы, например, в фейсбуке такое было, то женщинам приходилось бы заново там регаться после свадьбы. Слава богу, такого там нет.
Опять не вижу проблему — пользователь-то знает, нажимал он Й или набирал И + ̆:)
Дык это от софта зависит. Вот у себя дома на русской клавиатуре вы нажимаете одну кнопку Й, а где-нибудь в отпуске на клавиатуре в другой ОС вы будете выбирать букву И и модификатор к ней.
У меня на клавиатуре для набора символов ô, ò, ó нужно нажимать по две-три клавиши в определённом порядке. Предположу, что в странах, где эти символы есть в алфавите, они набираются одной клавишей.

На счёт проблемы с логином согласен — сделали бы логином адрес электронной почты, и проблем бы не было… До тех пор, пока не начнут использовать национальные домены для почты :)
ô, ò, ó
я вижу, что у вас это по одному символу, а не маленькая латинская o + комбинирующий циркумфлекс/гравис/акут. Насчет, допустим, французского языка не знаю, может они и вводят комбинирующие модификаторы, но, например, в польском я ввожу всякие ó, ą и ł одним символом (хоть и двумя клавишами).
Я думаю, суть вы поняли — символы юникода могут кодироваться разными последовательностями байт и в то же время означать одно и то же, а приведённые мною символы — это просто доступный мне пример, так как неевропейских символов у меня под рукой нет.
В тексте последнего комментария набирал я их, кстати, не за компом, а на экранной клавиатуре, долгим тапом и свайпом :)
Ну, надеюсь, вы меня тоже поняли:)
Во французской раскладке для частых символов, таких как é, ç, à, è, ù, предусмотрен ввод нажатием одной клавишы. А для ô, î, â, ö ï нужно нажимать последовательность клавиш (просто может кому любопытно).
Спасибо, мне интересно.
Вы описываете проблемы нормализации юникодных символов. Алгоритмы нормализации известны и нормализацию могут проводить даже, например, на этапе сохранения данных в СУБД.
Это одинаковые как внешне, так и по кодированию символы. Я думаю автор ошибся при копировании.
Мде, раздули проблему на пустом месте!
Те, кому не хочется проблем, не разрешают использовать не-ASCII символы в логинах и паролях. А зачастую так вообще ограничение еще строже делается.
Ну, а кому хочется приключений на свою пятую точку, разрешают юникод.
Простите, вы в сбербанке работаете?
А много Вы знаете программ, которая обрабатывает юникод по стандарту, полностью и абсолютно без багов?

stackoverflow.com/questions/6162484/why-does-modern-perl-avoid-utf-8-by-default/6163129#6163129

Хотели бы чтобы Ваш банк полностью поддерживал юникод в логинах и паролях?
А много Вы знаете программ, которая обрабатывает юникод по стандарту, полностью и абсолютно без багов?
Почему-то мне кажется, что это проблема не юникода.
Вот например Chrome самовольно нормализует юникод stackoverflow.com/questions/11176603/how-to-avoid-browsers-unicode-normalization-when-submitting-a-form-with-unicode

Программа, описанная в посте это учитывает?

Или пароль в одних браузерах подходит, в других нет?

Или Вы знаете что в вашем языке программирования нужно сделать чтобы sha/md5 на стороне БД высчитывалось так же как и в языке программирования
А если я японец? ッ
логин это не имя. И вообще, лучше уж номер телефона или емейл просить в качестве логина, а уж имя пусть любое пишет.
Короче, как мне кажется, в качестве логина должна выступать такой набор символов по которым можно с человеком связаться и запросить подтверждение регистрации.
И у вас нет латинницы на клавиатуре? Не смешите мои тапочки!!!

vinograd19, не надо меня оскорблять!

И не надо выдумывать несуществующих оправданий использованию юникода: он нужен лишь в многоязычных документах, да народам с иероглифическим письмом!
Привет Эдди,

Скажи мне какая у тебя локаль? ;)

А вообще у японцев какбы хирагана и катакана (и ещё куча других да) в качестве письменности, они набираются латиницей.

Разный ник и логин? Берём ник выглядищий похоже (если вообще одинаковые ники запрещены) и выдаём себя за другого человека. Можете посмотреть какой треш творился на говнокод.ру.

P.S. Как будто логин через почту более безопасен.
Привет.
Сразу тебе ответить не мог (почему? — взгляни в мой профиль на некий показатель, отторгающий этот сайт от делового общения).
А локаль у меня спрашивать не надо: я с линуксом знаком около 12 лет (точно не помню), так что локаль у меня классическая — КОИ8-Р. Другой и не нужно, я ведь не китаец…

// глянул тебе в профиль. Да уж, ты тоже от «ылиты» пострадал …
Мне вот интересно, как люди вообще додумываются ко взлому, не сама мотивация, а именно сам процесс мышления и тот объем знаний которым должны они обладать. Я сам по себе ИМХО не самый тупой инженер, но это вне моего понимания (
Я восхищяюсь такими людьми.
Сама мысль «у нас юникод разрешён в логине и пароле» незамедлительно вызывает у меня ассоциации со взломом. Хотя уязвимостями и взломами я интересуюсь гораздо меньше некоторых остальных вещей и никогда не тяготел к поиску уязвимостей.
Sign up to leave a comment.

Articles