Testing Challenge #1 – solution

Привіт друзі! Минулого тижня опублікував посилання на Testing Challenge. Сьогодні ж вирішив швиденько сам пробігтися, згадати молоді роки 😃

УВАГА! Spoiler Alert! Далі будуть рішення – якщо хочете пройти його самі – не читайте!

Я б розбив рішення на декілька категорій. Перша – очевидна та найбільша – класи еквівалентності та граничні значення:

  1. Слово латиницею (наприклад hello)
  2. Пусте поле вводу
  3. 1 буква (нижня границя)
  4. 30 букв (верхня границя)
  5. 31 буква (більше максимуму)
  6. Цифра
  7. Слово кирилицею (наприклад вітаю)
  8. Пробіл
  9. Слово з пробілом на початку
  10. Слово з пробілом в кінці
  11. Слово з пробілом посередині

Далі кілька типових тестів на безпеку:

  1. ‘ – одинарна лапка (базова перевірка на SQL ін’єкцію. Ідея в тому, що якщо значення поля без перевірки передається в БД, то лапка зламає SQL типу SELECT * FROM TABLE WHERE NAME = ‘значення_інпуту’. В такому випадку після лапки можна додати крапку з комою та будь-який інший вираз – читати, модифікувати чи видаляти. Насправді все складніше, але на базовому рівні достатньо 😃)
  2. <div> – перевірка, що html тег не ламає сторінку
  3. <script>alert()</script> – базова перевірка на XSS. Ідея в тому, що якщо значення поля передається на сторінку, можна змінити її зміст та змусити виконуватись сторонні JS скрипти

Далі тести, що вимагають додаткових знань в html/css/http/роботі браузеру. Треба відкрити DevTools (F12):

  1. Коментар – в коді сторінки є коментар з похвалою, що ви його знайшли та кодом, що треба передати в поле вводу
  2. Також в коді сторінки можна побачити перелік прихованих інпутів, що передається. Один з них – user_right_as_admin = 0. Якщо замінити на 1 та передати будь-яке значення – відповідь буде зараховано
  3. Cookie – у відповіді серверу можна знайти додаткову куку TestingChallenge, в ній схований код
  4. Також на сторінці Network можна помітити, що 1 css файл не знайдено. Якщо ввести його ім’я – це буде ще одна відповідь (хоч це не дуже очевидно, я сам підвис)

Власне, вже 18/18. Хочу додати кілька пунктів особисто від себе:

  • Автор челенджу дуже легко поєднав цифри та майже всі спец символи (наприклад !”№;%:?*@^) в одну категорію “Other chars then alphabetic”. З мого досвіду – я б робив окремі тести для них
  • Коли був junior’ом, не розумів, нащо стільки окремих кейсів на пробіли. Зараз, знаючи, як багато розробників не обрізає їх з інпутів, розумію, на що натякав автор
  • Окрім відсутнього css файла – також немає arrow.png – але за нього бал не дається
  • В JS консолі також є кілька помилок, але жодна з них не дає бал
  • До виконання челенджу в коді є прихований інпут found, в ньому кількість знайдених варіантів. Можна ввести 100 і отримати 100/18 😁

Такі справи. І це лише перший челендж з 10. Як вам інші?

26 Січня 2021
Автор: 
Oleksii Ostapov

Долучитися до обговорення

  1. blank

2 коментарі

Залишити коментар

Залишити вiдгук