Савва · продакт, #qa-antrakt
Переслал вам письмо зрителя. Человек поменял в ссылке на свой заказ одну цифру и увидел чужой: имя, место, ряд. Говорит, ничего не трогал, просто интересно стало. До «Ночи продаж» месяц. Если такое найдут в ночь, когда покупают сорок тысяч человек, это уже не письмо, а новость. Мы выдержим?
Вера Ланская · лид QA, #qa-antrakt
Безопасность у нас не отдельный отдел, который придёт перед релизом. Это проверки в нашем наборе. Заказ по номеру мы проверяли в блоке про API, а ручек с номером заказа с тех пор стало больше. Пройди по каждой, и не только по заказам.
В уроке 52 ты уже ловил чужой заказ: второй зритель запрашивает GET /orders/{id} и должен получить 403. Тогда это была одна ручка и один тест. С тех пор у «Антракта» появились оплата, возврат, список своих заказов, а в задаче урока ещё и кабинет зрителя. Проверка прав, которую сделали один раз, не размножается сама, когда появляются новые ручки. Её надо размножить тестами.
Гардероб
Гардеробщица в театре отдаёт пальто по номерку. На лицо она не смотрит: номерок 47, значит, пальто с крючка 47. Работает это, пока номерки не подделывают. Но номерки в театре идут подряд, и если у тебя 47, легко догадаться, что у соседа 48. Принеси картонку с цифрой 48, и пальто твоё.
Защита тут не в том, чтобы прятать номера. Защита в том, чтобы гардеробщица проверяла, тот ли это человек, который сдавал пальто. В API это значит: сервер на каждый запрос с номером ресурса проверяет не только «кто ты» (вход), но и «твоё ли это» (права на этот конкретный объект).
IDOR это ровно гардеробщица, которая не смотрит на лицо. Письмо зрителя Саввы описывает баг orders-idor с нашего стенда, только найденный не тестом, а любопытством.
урок из курса
Урок из курса «Автотестирование с нуля». Курс покупается один раз и остаётся навсегда: 500 ₽.
Оплата пока не подключена: премиум и курсы открываются промокодом.