Практическое руководство FindRisk
Авторизация и бизнес-логика API: роли, организации, файлы и платежи
Успешный вход не разрешает все действия. Разделите проверку функции, объекта, поля и бизнес-перехода: иначе отдельные корректные обработчики могут складываться в небезопасный сценарий. Проверяйте как ответы, так и изменения состояния.
Что сделать
Материалы по теме
BFLA: как закрыть административные функции API от обычных пользователей
Проверка доступа к функциям API: серверная матрица ролей, альтернативные HTTP-методы и административные действия без доверия интерфейсу.
BOPLA: контроль чтения и изменения отдельных полей API
Как ограничить поля ответа и записи по роли: служебные атрибуты, сериализация, вложенные объекты и массовое присваивание.
BOLA и IDOR в API: проверка доступа к объектам
Почему подмена идентификатора объекта не должна менять доступ и как проверять права без опасных действий.
Multi-tenant SaaS: как предотвратить утечку между организациями
Изоляция арендаторов в SaaS: tenant context, запросы к базе, кэш, файлы и фоновые задачи без доверия клиентскому tenant ID.
Авторизация скачивания файлов: почему секретной ссылки недостаточно
Как защитить приватные документы: проверка владельца, подписанные URL с ограниченным сроком и запрет общего кэширования ответов.
Уязвимости оплаты: проверка цены, заказа и статуса на сервере
Как защитить интернет-магазин от ошибок бизнес-логики: серверный расчёт суммы, проверка валюты и подтверждение оплаты через доверенный канал.
Идемпотентность API: защита от повторной оплаты и выполнения операции
Как обрабатывать повторы запроса без повторного эффекта: привязка idempotency key к пользователю, параметрам и атомарной записи результата.
Безопасность webhook: подпись, повторная доставка и порядок событий
Как проверять подлинность webhook по исходному телу, ограничивать replay и безопасно обрабатывать дубли и события вне порядка.
Источники и границы
- Внешний скан не проверяет всю матрицу ролей и переходов бизнес-состояния.
- Используйте тестовые организации и платёжный sandbox, без реальных списаний.