Как и все собравшиеся в этом мониторе, мне приходится тестировать иногда проклятые поля ввода логина и пароля. И еще поля регистрации нового юзверя. По ходу дела и после поисков по интернетам собрался отдельный файлик с перечнем тематических тестов (еще будет дополняться и всячески обновляться). Полезен и в ратнейшем труде программистов.
Повсюду под предложением «Expected: alert» подразумевается, что ответ должен быть отрицательным, но система должна как-то сигнализировать юзеру о причине проблемы.
Регистрация нового пользователя
- Зарегистрировать нового пользователя с логином new_user. Expected: можно.
- Зарегистрировать нового пользователя с логином new_user_test. Expected: можно.
- Зарегистрировать нового пользователя с логином new-user. Expected: можно.
- Зарегистрировать нового пользователя с логином new1234user. Expected: можно.
- Зарегистрировать нового пользователя с логином new@user. Expected: alert.
- Зарегистрировать нового пользователя с логином newuser и паролем newuser (полное совпадение). Expected: alert.
- использование только ASCII символов в логине – Expected: alert.
- регистрация пользователя с логином, содержащим пробелы или состоящим из одних пробелом – Expected: alert.
- регистрация пользователя с паролем, содержащим пробелы или состоящим из одних пробелом – Expected: alert.
- регистрация пользователя с логином содержащим XSS или SQL injections. – Expected: alert.
- а можно ли зарегистрировать пользователя «admin», и пользователя «аdmin» (где а – из русской расскладки)?
- В некоторых случаях разработчики проверяют пользователя в базе с помощью LIKE, и не обрабатывают user input. Поэтому нужно проверить комбинацию %%%/%%% (знак % повторяется 3 раза, чтобы обойти валидацию на минимальную длину).
- Логин под существуюшим пользователем — смена пароля:
- Создать аккаунт с максимально возможным числом символом в логине
- Попробовать залогиниться
- Попробовать сменить пароль
- Причина: возможно несовпадение максимумов между строками ввода нового пароля, ввода пароля, смены пароля, и в БД.
- Дополнительно: проделать те же шаги, но с количеством символов макс+1
- Дополнительно: проделать те же шаги, но
- с макс. количеством разрешенных символов + пробел (и другие безобидные);
- с макс. количеством разрешенных символов + 1 запрещенный.
- Создать аккаунт с максимально возможным числом символом в пароле
-
- Попробовать залогиниться
- Попробовать сменить пароль (а может — и сам логин?)
- Причина та же: возможно несовпадение максимумов между строками ввода нового пароля, ввода пароля, смены пароля, и в БД.
- Создать аккаунт с максимально возможным числом символом в логине
Ввод некорректных данных
- Ввeсти корректный логин и корректный пароль. Expected: успешно залогинен. Разлогиниться. Почистить кэш и куки (открыть/закрыть браузер?).
- Оставить оба поля пустыми. Нажать на Login. Expected: alert.
- Оставить пустое поле login. Нажать на Login. Expected: alert.
- Оставить пустое поле password. Нажать на Login. Expected: alert.
- Ввeсти корректный логин и некорректный пароль. Expected: alert.
- Ввeсти некорректный логин, но корректный пароль. Expected: alert.
- Ввeсти некорректный логин и некорректный пароль. Expected: alert.
- В поле логина ввeсти корректный пароль, а в поле пароля ввести корректный логин. Expected: alert.
- Ввeсти логин <script>alert(123)</script> и корректный пароль. Expected: alert.
- Ввeсти в поле логина SQL запрос (‘ or ‘a’ = ‘a’; DROP TABLE user; SELECT * FROM blog WHERE code LIKE ‘a%’;) — структура запроса зависит от DB.
- Ввeсти в поле логина скрипт (<script>alert(«Hello, world!»)</alert>, <script>document.getElementByID(«…»).disabled=true</script>)
- Ввeсти в поле логина html-теги (<form action=»http://live.hh.ru»><input type=»submit»></form>)
- Ввeсти в поле логина сложную последовательность символов вроде «♣☺♂» , «»‘~!@#$%^&*()?>,./\<][ /*<!—«», «${code}»;—>
- Ввeсти в поле логина текст состоящий из одних пробелов;
- Ввeсти в поле логина правильный логин, начинающийся с нескольких пробелов, и правильный пароль. Expected: alert.
- Ввeсти в поле логина правильный логин, после которого следуют нескольких пробелов, и правильный пароль. Expected: alert.
- Ввeсти корректный логин и корректный пароль. Нажать на кнопку «Назад» в браузере. Expected: непонятно — или The page should be expired, или увидеть те же поля. Если второе — ввести в поля снова логин и пароль. Перейти. Залогинен?
- Ввeсти корректный логин. Указать пароль с использованием букв РАЗНОГО регистра.
- Ввeсти логин с использованием букв РАЗНОГО регистра. Указать корректный пароль.
- Зарегистрировать пользователя с логином VasEA. Expected: можно. Попытаться залогиниться, используя в логине буквы только одного регистра (vasea). Expected: можно.
- Зарегистрировать пользователя с логином petea/iZMaIL. Expected: можно. Попытаться залогиниться, используя в пароле буквы только одного регистра (petea/izmail). Expected: alert. Алерт должен указать на причину?
- Проверить ограничение на длину логина и пароля при регистрации? Ввести qqweqweqweqweqweqweqweqweqweqweqweqweqweqwe / qqweqweqweqweqweqweqweqweqweqweqweqweqweqwe
- Ввести логин/пароль Aa!@#$%^&*()-_+=`~/\,.?><|b / PaSSword!@#$%^&*()-_+=`~/\,.?><| Есть ли ограничения на допустимые символы?
- Ввести логин/пароль Иван/Болван Возможно ли создание имени/пароль с например кириллицей, если да — то как потом эта форма отрабатывает?
- Ввeсти логин ksjdksbdshdoueywfgjwevflwjeyfvowyecsydcvsldc (несуществующий в базе), оставить поле пароля пустым. Expected: such user doesn’t exist.
- Открыть первый бразуер. Залогиниться валидным юзером. Открыть второй браузер. Залогиниться тем же самым валидным юзером. Expected: можно. Разлогиниться в первом браузере. Expected: можно. Перейти во второй браузер. Сделать что-нибудь, что может сделать только залогиненный юзер. Expected: можно.
- Открыть браузер. Ввести в поля валидные данные. Нажать на кнопку Login. Отключить интернет. Получить «страница недоступна». Подключить интернет обратно. Зайти на сайт. Expected: не залогинен.
- Блокируется ли акаунт/IP того, кто введет n-количество раз не правильный пароль?
- Установить фокус на поле логина. Ввести текст. Нажать кнопку Tab на клавиатуре. Expected: фокус перемещается на поле пароля. Ввести текст. Нажать кнопку Tab на клавиатуре. Expected: фокус перемещается на галочку «remember me». Нажать кнопку Space на клавиатуре. Expected: появилась галочка. Нажать кнопку Tab на клавиатуре. Expected: фокус перемещается на кнопку Login. Нажать кнопку Enter на клавиатуре. Expected: процесс пошёл.
- User should be a registered user with his/her account expired. Clicks on the Login button.
- A message should appear stating ‘Your account has been expired’.
- Проверка на ‘Remember me on this computer’. Заполнить поля валидными данными. Чекнуть галочку Remember me. Залогиниться. Закрыть браузер. Открыть бразуер. Открыть страницу сайта. Expected: логин для входа не требуется.
- Ввести логин существующего пользователя, обрамив его уголками: <userlogin>. Причина: иногда валидатор вырезает запрещенные символы и проверяет остаток, однако после прохождения проверки передает дальше оригинальную строку.
Смена/удаление логинов
- В базе или настройках сайта указать, что срок годности определенного логина истек. Залогиниться под этим логином. Expected: Alert.
- Залогиниться под корректными логином/паролем. Сменить пароль. Залогиниться под новым паролем. Expected: пароль сменен, можно зайти.
- Смена пароля и заход под старым
- запомнить пароль
- войти в систему
- поменять пароль
- разлогиниться
- залогиниться обратно со старым паролем. Expected: не пускает.
- Залогиниться под корректными логином/паролем. Переименовать аккаунт. Перегрузить браузер. Залогиниться под старыми логином/паролем. Expected: не пускает. Залогиниться под новым логином/паролем. Expected: пускает.
- Залогиниться под корректными логином/паролем. Удалить аккаунт. Перегрузить браузер. Залогиниться под старыми логином/паролем. Expected: не пускает.
Особые случаи
- Ввeсти корректный логин и корректный пароль. Скопировать полученный url и вставить его в другой браузер. Expected: It should not display the user’s welcome page.
- Подумать об обработке операции «вставить», т.е. рассмотреть различные способы ввода данных.
- Как формируется запрос к серверу с данной формы (get/post)? Как передается пароль — в виде хэша или плэйн-текстом в теле ПОСТа?
- Если данные передаются в адресной строке браузера в виде «login=bla-bla&password=bla-bla»
- — применить все варианты некорректных данных, включая запрещенные символы, и пограничные значения;
- — передать ещё какой-нибудь параметр из существующих, напр. «login=bla-bla&password=bla-bla&state=update»
Можно еще добавить невозможность cut and copy пароль
Возможно тут опечатка: «Создать аккаунт с максимально возможным числом символом в [u]логине[/u]» и вместо «логине» должно быть «пароле», исходя из контекста: «Попробовать залогиниться
Попробовать сменить пароль
Причина: возможно несовпадение максимумов между строками ввода нового пароля, ввода пароля, смены пароля, и в БД.» или я ошибаюсь?
Не помню. Это ж сто лет назад было писано 🙂
За рассуждение возьмите лайк.
только надо указать каких именно символов
0–31 Коды управляющих символов [возвраты каретки, сигнал и прочее]
65-90 строчные латинские символы [ABCD и.т.д.]
а то создается впечатление что Login123 у Вас будет не правильный, хотя наверняка имелось ввиду, что надо только чтобы у вас были НЕ допустимы отличные от A-Z, a-z, 0-9, -,_
P.S. Подвох в слове символ вероятно, буквы и цифры тоже символы обозначающие что-то)
Expected: such user doesn’t exist. — Не правильно с точки зрения безопасности разделять правильность пароля и имейла. По крайней мере согласно OWASP система не должна уведомлять о том, что такого пользователя не существует
эта сильна!