Чтение заказа без проверки владельца
Маршрут GET /api/orders/:id выдаёт заказ по его номеру любому вошедшему покупателю. Проверка принадлежности заказа отсутствует в этом учебном сценарии.
Почему это важно
Другому покупателю становятся доступны состав заказа, имя получателя и адрес доставки. Чужие данные покидают границы аккаунта.
Когда возникает
Покупатель вошёл в аккаунт и передал номер чужого заказа. Изменение или удаление заказа этим примером не подтверждены.
Основание вывода и сценарий воспроизведения
Иллюстрация доказательств для учебного примера. В реальном отчёте здесь размещаются обезличенные результаты проверки согласованной версии проекта.
- Создать тестовых покупателей А и Б с разными аккаунтами.
- Создать заказ № 1042 от покупателя А.
- От имени покупателя Б запросить этот заказ через API.
- Сопоставить владельца заказа и пользователя, получившего ответ.
GET /api/orders/1042
User context: buyer_b
HTTP 200 OK
{
"id": 1042,
"customerId": "buyer_a",
"items": ["Учебный товар"],
"recipient": "Тестовый получатель А",
"deliveryAddress": "Учебный адрес А"
}Ожидается: отказ в доступе без данных чужого заказа. В примере: успешный ответ с данными покупателя А. Совпадения номера заказа недостаточно для разрешения доступа.
Как проверить исправление
| Сценарий | До исправления в примере | Критерий приёмки |
|---|---|---|
| А запрашивает свой заказ | Доступ есть | Доступ сохраняется |
| Б запрашивает заказ А | Чужие данные выданы | Отказ, данные не выданы |
| Запрос без входа | Доступ закрыт | Отказ сохраняется |
| Запрошен несуществующий заказ | Не проверено | Согласованный ответ без лишних сведений |
Конкретные коды отказа фиксируются в контракте API до изменения. Отдельно проверяется, что ответ не раскрывает существование чужого заказа.