
Привіт друзі! Минулого тижня опублікував посилання на Testing Challenge. Сьогодні ж вирішив швиденько сам пробігтися, згадати молоді роки 😃
УВАГА! Spoiler Alert! Далі будуть рішення – якщо хочете пройти його самі – не читайте!
Я б розбив рішення на декілька категорій. Перша – очевидна та найбільша – класи еквівалентності та граничні значення:
- Слово латиницею (наприклад hello)
- Пусте поле вводу
- 1 буква (нижня границя)
- 30 букв (верхня границя)
- 31 буква (більше максимуму)
- Цифра
- Слово кирилицею (наприклад вітаю)
- Пробіл
- Слово з пробілом на початку
- Слово з пробілом в кінці
- Слово з пробілом посередині
Далі кілька типових тестів на безпеку:
- ‘ – одинарна лапка (базова перевірка на SQL ін’єкцію. Ідея в тому, що якщо значення поля без перевірки передається в БД, то лапка зламає SQL типу SELECT * FROM TABLE WHERE NAME = ‘значення_інпуту’. В такому випадку після лапки можна додати крапку з комою та будь-який інший вираз – читати, модифікувати чи видаляти. Насправді все складніше, але на базовому рівні достатньо 😃)
- <div> – перевірка, що html тег не ламає сторінку
- <script>alert()</script> – базова перевірка на XSS. Ідея в тому, що якщо значення поля передається на сторінку, можна змінити її зміст та змусити виконуватись сторонні JS скрипти
Далі тести, що вимагають додаткових знань в html/css/http/роботі браузеру. Треба відкрити DevTools (F12):
- Коментар – в коді сторінки є коментар з похвалою, що ви його знайшли та кодом, що треба передати в поле вводу
- Також в коді сторінки можна побачити перелік прихованих інпутів, що передається. Один з них – user_right_as_admin = 0. Якщо замінити на 1 та передати будь-яке значення – відповідь буде зараховано
- Cookie – у відповіді серверу можна знайти додаткову куку TestingChallenge, в ній схований код
- Також на сторінці Network можна помітити, що 1 css файл не знайдено. Якщо ввести його ім’я – це буде ще одна відповідь (хоч це не дуже очевидно, я сам підвис)
Власне, вже 18/18. Хочу додати кілька пунктів особисто від себе:
- Автор челенджу дуже легко поєднав цифри та майже всі спец символи (наприклад !”№;%:?*@^) в одну категорію “Other chars then alphabetic”. З мого досвіду – я б робив окремі тести для них
- Коли був junior’ом, не розумів, нащо стільки окремих кейсів на пробіли. Зараз, знаючи, як багато розробників не обрізає їх з інпутів, розумію, на що натякав автор
- Окрім відсутнього css файла – також немає arrow.png – але за нього бал не дається
- В JS консолі також є кілька помилок, але жодна з них не дає бал
- До виконання челенджу в коді є прихований інпут found, в ньому кількість знайдених варіантів. Можна ввести 100 і отримати 100/18 😁
Такі справи. І це лише перший челендж з 10. Як вам інші?
Не получается передать user_right_as_admin = 1, как Вы это сделали?
Відкрити DEV Tools (F12) та редагувати флаг на формі
user_right_as_admin редактируйте на вкладке Elements, а не на вкладке Sources