Я рассмотрю вариант где нет никакой документации и приходится опираться на опыт и здравый смысл.
Иначе документация и есть то правило на которое необходимо равняться. Тогда тестируй и документацию.
Я возьму часто встречающуюся форму с двумя полями:
логин
пароль

Под логином может быть емаил, номер телефона или ник.
— найти форму входа должно быть легко
Она должна быть на виду или доступна в один клик.
Пользователь должен сразу понять, что этот сайт имеет форму входа.
Иначе пользователь просто не поймет, или пропустит и не зарегистрируется. Тогда мы потеряем потенциального клиента.
— убедись в том, что форма входа имеет поля для логина и пароля, имеет кнопку для входа и ссылку «забыли пароль?»
Формы бывают разные.
Обычно это два поля: логин и пароль.
Ссылка на регистрацию нужна если ее нет отдельно на главной странице. Потому что искать ее будут именно на форме входа(если не смогут найти).
Ссылку «забыли пароль?» также будут искать на форме входа. Она не должна быть отдельно, чтобы пользователь не тратил время на ее поиски.
Он сталкивается с проблемой «вспомнить пароль» именно на форме входа, где пытается его подобрать.
— где находиться курсор после загрузки формы входа?
— форма входа содержит ссылку на регистрацию?
— убедись в том, что пользователь может войти в систему с действительным логином и паролем
— как отображаются ошибки?
— должно быть видно сообщение об ошибке если введены некорректные данные
Сообщения об ошибках могут отображаться всплывающим окном или появляться текстом рядом с полем.
Уже давно сложилось правило для одного предупреждения — сообщение «неправильный логин или пароль» вместо «неправильный пароль».
С одной стороны это не удобно для пользователя, ему не сообщается в каком поле именно он сделал ошибку. И прикрываются тем, что злоумышленнику будет сложнее подбирать логин и пароль.
Ну это как посмотреть. Логин можно узнать и другими способами, а предупреждение, которое не помогает определить место ошибки, забирает много времени. Чаще всего приходится все стирать и вводить заново.
Однако это распространенное поведение. И если нет документации, тогда любое предположение о предупреждении не больше чем предложение по улучшению.
Главное, что ты можешь требовать — сообщение об ошибке должно быть показано… если ошибка совершена.
— сообщение об ошибке должно быть показано
— убедись в том, что нельзя авторизироваться с неверными логином и паролем
— убедись в том, что есть предупреждение о незаполненном поле
В форме два поля и оба они являются важными, обязательными.
И если одно из них пустое, тогда это должно как то выделяться: окрашивать рамку в красный цвет, выводить предупреждение, все что угодно, но только не проходить дальше.
Дело в том, что связка логин и пароль(или только пароль) обычно совмещается и шифруется по какому то алгоритму в хеш. И этот хеш всегда одинаковой длины независимо от длины пароля.
Такой же хеш храниться в базе данных после регистрации вместо самого пароля. Так даже если кто то получит доступ к хэшу — он не сможет узнать настоящий пароль.
Хеш нельзя расшифровать обратно в пароль.
Один хэш храниться в базе данных и когда ты вводишь логин и пароль, то на стороне клиента(в браузере) они шифруются, этот хэш отправляется на сервер где и сравнивается с копией сохраненной при регистрации.
Хэш также может формироваться одновременно на стороне клиента и на стороне сервера, а потом сравниваться.
Варианты бывают разные, вдаваться в подробности не буду. Смысл в том чтоб не посылать открыто пароль на сервер.
— введи действительный логин и неправильный пароль
— введи неправильный логин и правильный пароль
— оставь поля пустыми и нажми ентер или кликни кнопку вход
— поле логин пустое, поле пароль — правильные данные
— поле логин с правильными данными, поле пароль — пустое
— введи неправильные логин и пароль
— есть ли предупреждение, что превышен лимит символов в поле логин или в поле пароль?
У каждого поля может быть ограничение на количество введенных символов. Другое дело отображается ли оно и если да, то как?
Возьмем поле «логин».
Здравый смысл подсказывает, что это ограничение должно быть одинаково как для формы входа, так и для формы регистрации. Мы можем посмотреть в форме регистрации какие ограничения стоят для поля «логин».
Например, в форме регистрации для поля логин ограничение не больше 40 символов.
Тогда даже если в форме входа логин принимает больше 40 символов — действительным данным это никак не помешает.
Максимум неудобства, если пользователь ошибется и введет лишний символ в свой 40 символьный логин. В этом случае желательно чтоб поле «логин» из формы входа имело столько же ограничений сколько и поле «логин» из формы регистрации.
Вариант похуже. Когда в поле логин (формы входа) стоит ограничение меньше 40 символов. Тогда могут возникнуть трудности с действительными данными. И вот это уже проблема посерьезнее.
40 символов я взял условно. Это может меняться в каждом конкретном случае. Нет никакого правила определяющего максимальное количество символов для логина.
С полем для пароля все иначе. Тут ограничение может быть, но лично я смысла в нем не вижу. Пароль есть пароль, и чем больше символов, тем сложнее его подобрать(и сложнее запомнить). Ограничения здесь не нужны.
Но и тут может быть проблема.
Если есть максимальное ограничение на количество символов в поле пароль и это никак не сообщается — могут быть проблемы.
Пользователь может думать, что ввел один пароль, а на самом деле используется его укороченная версия.
Например, форма может обрезать последние символы.
Или просто не дать их ввести.
Но пользователь об этом не догадается, так как обычно символы в поле пароль маскируются звездочками
В чем вся проблема.
Проблема может быть если пользователь столкнется с полем для пароля спрограммированного иначе, чем поле при регистрации.
Например, на странице входа или при восстановлении пароля.
Тогда и может всплыть несоответствие пароля, хотя пользователь вводит все то же самое.
Просто потому, что другое поле позволит вводить больше символов, например.
— убедись в том, что существует ограничение на общее число неудачных попыток
Необходима защита от подбора пароля. Самый распространенный способ — ограничить число неудачных попыток. Их число может быть разным. После которого аккаунт и\или возможность входа блокируется на некоторое время.
Если пользователь ошибся, тогда он может попробовать ввести пароль позже или восстановить пароль.
Главное ограничить возможность перебора пароля для злоумышленников. Иначе рано или поздно пароль будет подобран правильно.
— Есть ли чувствительность регистра у полей логина и пароля?
Чувствительность к регистру (различает ли поле маленькие буквы от больших) в поле для логина, например, быть не должно.
Поле не должно считать разными логинами login и LOGIN.
А вот для поля пароль это необходимо.
Чувствительность регистра добавляет количество вариантов для одного символа, а значит пароль будет сложнее подобрать.
— поле пароль маскирует символы?(обычно звездочками)
— есть ли минимальная длина у поля пароль?
В чем смысл требовать от пользователя вводить минимум 6 символов в пароль? Да еще и чтоб это были цифры и буквы.
Почему форма не разрешает вводить пароль только из цифр или только из букв?
Один из вариантов взлома аккаунта — это подбор пароля.
Используются распространенные пароли или метод перебора.
Так вот, чем меньше символов в пароле, тем легче его подобрать. Также в сложности подбора важно количество вариантов для одного символа.
Например, цифр всего 10. И если пароль состоит только из цифр, то для каждого символа есть лишь 10 вариантов.
Надежность пароля можно разобрать как длину символов (чем длиннее пароль тем тяжелее его подобрать) и количество вариантов для одного символа(чем больше вариантов, тем больше комбинации и больше времени понадобиться чтобы проверить их все)
Поэтому чаще требуют чтобы пароль содержал и цифры и буквы, верхний и нижний регистр, спецсимволы — чтобы максимально расширить количество вариантов для одного символа.
- Арабские цифры = 10 вариантов - Латинский алфавит = 26 вариантов - Латинский алфавит только с нижним регистром(или только с верхним) и цифры = 36 вариантов - Латинский алфавит с верхним и нижним регистром = 52 варианта - Латинский алфавит с верхним и нижним регистром + цифры = 62 варианта - Латинский алфавит с верхним и нижним регистром + цифры + спецсимволы и без пробела = 94 варианта - Латинский алфавит с верхним и нижним регистром + цифры + спецсимволы + пробел (все символы таблицы ASCII) = 95 вариантов - Символы расширенной таблицы ASCII - 218 вариантов
Спасибо, Артём. Очень полезно, а для новичков просто необходимо.
спасибо!)
Артем, спасибо. Тебя очень приятно и полезно читать. Ты молодец.
Огромное спасибо. Чётко и по делу.
В целом статья понравилась, но местами категорически не согласен:
Пароль должен быть длинным. От этого зависит безопасность пользователя, его конфиденциальность, личные данные, номер сотового телефона, почтового ящика, банковские реквизиты, полное имя, адрес — это все может стать доступно из-за плохого пароля. Да, пробивают пароли перебором, и используют для этого специальные списки популярных паролей. Так вот — более 90% из них имеют длинну меньше 11 символов. Фигачишь в пароль фразу из любимого фильма слитно и с большой буквы и хрен кто твой пароль вломает. Цифры и спец символы не спасут, длинна спасет. Хотя бы просто потому что при полном переборе увеличение длинны пароля на один символ может стоить для злоумышленника очень очень дорого в плане времени