Чит-лист регистрации от Алексея Лупана
Содержание
Регистрация нового пользователя
- Зарегистрировать нового пользователя с логином 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»