🖥 Разбор квиза: что на самом деле значит 200 OK

Квиз прошли 184 человека. Правильный ответ «Пока неизвестно» выбрало всего 33% из ответивших, а вариант «Да, точно» набрал почти столько же голосов. Эту ошибку часто делают те, кто только начинает искать баги в API, поэтому разберу каждый вариант по отдельности.

Ситуация была такая: мы перехватили в Burp запрос GET /api/orders/104, заменили номер на 105 и получили ответ 200 OK.

❌ «Да, точно»

Код 200 сообщает, что сервер обработал запрос без ошибки. Чьи данные лежат в ответе, по коду понять нельзя. За тем же 200 OK может оказаться ваш собственный заказ №105, о котором вы забыли, пустой объект {} или null, страница логина или JSON вида {"error": "access denied"}: многие API отдают ошибку в теле и оставляют код 200. Бывает, что данные открыты по задумке разработчиков, например статус доставки по трек-номеру. Уязвимость подтверждается только содержимым ответа, в котором видны данные другого пользователя.

❌ «При IDOR сервер отвечает 403»

Ответ 403 Forbidden означает, что сервер проверил права и отказал в доступе. Значит, проверка в этом месте работает и IDOR там нет. Часть систем в такой ситуации отвечает 404, чтобы не подтверждать даже существование заказа с этим номером.

❌ «IDOR бывает только в POST»

Уязвимость появляется в любом запросе, где сервер берёт идентификатор от пользователя и не сверяет его с владельцем объекта. Метод при этом роли не играет:

GET /api/orders/105

PUT /api/users/105/email

DELETE /api/comments/105

GET /download?file=invoice_105.pdf

Идентификатор может передаваться в URL, в теле запроса, в cookie или в заголовке. Самые серьёзные последствия бывают у IDOR в PUT и DELETE: через них меняют почту в чужом аккаунте или удаляют чужие данные.

11