Ожидания пользователей и нормализация юникода - PullRequest
5 голосов
/ 15 марта 2011

Это немного мягкий вопрос, не стесняйтесь, дайте мне знать, есть ли лучшее место для этого.

Я разрабатываю некоторый код, который принимает пароль, который требует международных символов - поэтому мне нужно сравнить входную строку Unicode с сохраненной строкой Unicode. Достаточно просто.

У меня такой вопрос: ожидают ли пользователи международных наборов символов нормализации в таком случае? Мои поиски в Google показывают некоторые противоречия во мнениях от «всегда делай это» (http://unicode.org/faq/normalization.html) до «не беспокойся». Есть ли плюсы / минусы, которые нельзя нормализовать?

Ответы [ 2 ]

5 голосов
/ 15 марта 2011

Я бы порекомендовал, чтобы, если ваше поле пароля принимает ввод Unicode (предположительно UTF-8 или UTF-16), вы нормализовали его перед хэшированием и сравнением.Если вы не нормализуете его, и люди обращаются к нему из разных систем (разных операционных систем или разных браузеров, если это веб-приложение, или из разных локалей), то вы можете получить один и тот же пароль, представленный в другой нормализации.Это будет означать, что ваш пользователь введет правильный пароль, но отклонит его, и не будет понятно почему, и у него не будет никакого способа его исправить.

0 голосов
/ 22 марта 2011

Я бы не стал беспокоиться по нескольким причинам:

  1. Вы собираетесь сделать вещи менее безопасными.Если два или более символа представлены в вашей БД как одно и то же, это означает, что для сайта меньше возможных паролей.(Хотя это, вероятно, не так уж и сложно, поскольку число возможных паролей довольно велико.)
  2. Вы будете встраивать код в свою программу, которая выполняет сложную работу, которая (вероятно) является частью библиотеки, которую выне писал ... и в итоге кто-то не сможет войти в систему.В моем понимании лучше быть простым и полагать, что люди, использующие разные наборы символов, знают, как правильно их печатать.Тем не менее, я никогда не реализовывал это в форме международных паролей, поэтому я не мог сказать вам, что такое стандартный шаблон проектирования.
...