Как стать автором
Обновить

Ограничение максимальной длины пароля

Время на прочтение2 мин
Количество просмотров39K
Каждый раз, когда вы ограничиваете в чём-то пользователя, спросите себя, зачем вы это делаете и кому от этого станет лучше. Нарушение этого правила ведёт к странным, а иногда и вредным ограничениям. Один из примеров — максимальная длина пароля.
6-12 characters
С ограничением длины снизу всё понятно, но кому нужно ограничение сверху? Пусть пользователь вводит хоть 200 символов, если ему хочется, фрику будет приятно. Жалко байтиков в POST-запросе? Место в базе данных? Но вы же (я надеюсь!) храните хэш от пароля, который всегда постоянной длины! Считаете, что хэширование 200-символьных паролей убьёт производительность сервера? Не смешно.

При всём при этом создатель сайта заставляет пользователя:
  • Воспринять и осмыслить лишнюю информацию;
  • Поволноваться, не превышает ли его любимый пароль указанное ограничение;
  • Дважды пересчитать символы в 12-символьном пароле, чтобы убедиться, что всё нормально;
  • Придумать новый пароль, если любимый оказался длиннее (не всем живым людям придёт в голову чисто компьютерное решение убрать последние символы пароля: он может стать неблагозвучным).

6-16 characters
Мало того, что это поле ввода заботливо не даёт ввести больше 16 символов, так ещё и его размер подогнан. Ввёл я семнадцатый символ. На экране не изменилось вообще ничего. Я не знаю, то ли случилась прокрутка и кружочки уползли влево, то ли пароль обрезался. Я не уверен, что размер поля именно 16 символов. Или мне кружочки пересчитывать?

Конечно, это всё не так страшно. Подумаешь, сервер заботливо обрежет пароль. Я могу спокойно вводить свои 18 символов каждый раз и не замечать неудобств. Однако некоторые известные сайты в своей недружелюбности пошли дальше:
LinkedIn password change
Я поменял пароль на свой любимый 18-символьный и поднял глаза на экран, увидев кружочки. Я не заметил, что 17-й и 18-й кружочек не появился, потому что сайт решил, что их слишком много. Кружочки я, конечно, тоже не пересчитывал. Положение усугубляет то, что здесь нет предупреждения о максимальной длине пароля. В результате я сам не заметил, как поменял пароль не на тот, что хотел, а на более короткий.

Желая посетить сайт в следующий раз, я наивно ввёл те же самые 18 символов в форму логина:
LinkedIn login form
Если вы пересчитаете кружочки, вы заметите, что их тут 18. Видимо, эту форму писал другой специалист, который не посчитал нужным сделать такое же ограничение длины (очень разумно, если бы ограничения не было нигде). Опаньки — вы ввели неверный пароль, попробуйте ещё раз. Ещё раз, разумеется, тоже без ограничений длины.

Я два раза пользовался восстановлением пароля, списав всё поначалу на мою криворукость (но это надо умудриться — в форме установки пароля два раза ввести неправильный). Только на третий раз я заметил, что при смене пароля кружочки втихаря обрезаются.

Через поиск нашёл аналогичную историю в недавней статье «Цифровой динозавр 21-го века». Думаю, таких историй (включая нерассказанные) наберётся больше, чем может показаться разработчикам. Добавляя глупое ограничение, можно потерять клиента на ровном месте, затратив при этом время на написание лишнего кода для проверки этого ограничения.
Теги:
Хабы:
Всего голосов 175: ↑164 и ↓11+153
Комментарии157

Публикации