OWASP Top 10 для API
↑ 7.4 Безопасность бэкенда · → Следующая
Зачем это на собесе
Стандартный вопрос: «какие уязвимости API вы знаете и как от них защищаетесь».
Объяснение
OWASP API Security Top 10 (редакция 2023):
| # | Риск | Защита |
|---|---|---|
| API1 | Broken Object Level Authorization (BOLA/IDOR) | проверка доступа к каждому объекту по владельцу |
| API2 | Broken Authentication | стойкие пароли, MFA, короткие токены, защита от перебора |
| API3 | Broken Object Property Level Authorization | не отдавать и не принимать лишние поля (DTO, allowlist) |
| API4 | Unrestricted Resource Consumption | лимиты запросов, размеров, пагинации, таймауты |
| API5 | Broken Function Level Authorization | проверка ролей/политик на функциях (админские методы) |
| API6 | Unrestricted Access to Sensitive Business Flows | защита сценариев (покупка, регистрация) от автоматизации |
| API7 | Server Side Request Forgery (SSRF) | allowlist адресов, запрет внутренних сетей, отдельная сеть |
| API8 | Security Misconfiguration | безопасные настройки, отключённые отладочные возможности, актуальные заголовки |
| API9 | Improper Inventory Management | реестр всех API и версий, вывод старых из эксплуатации |
| API10 | Unsafe Consumption of APIs | проверка данных от сторонних API как недоверенных |
// BOLA: проверка владельца на уровне запроса
var order = await db.Orders.FirstOrDefaultAsync(o => o.Id == id && o.OwnerId == user.Id, ct);
return order is null ? Results.NotFound() : Results.Ok(order.ToDto());Практики: единая авторизация как политика по умолчанию (deny by default), security-заголовки (HSTS, X-Content-Type-Options), CORS с allowlist, логирование попыток доступа, зависимости на сканировании (SCA), SAST/DAST в CI.
Нюансы и подводные камни
- Самая частая проблема — BOLA: авторизацию проверяют только на уровне роли.
- Mass assignment: биндинг тела в сущность.
- Обход через смену метода/версии API/пути.
- Информация в ошибках (стек, SQL) помогает атакующему.
- Безопасность нельзя добавить в конце: моделирование угроз на проектировании.
Практика
- Проверьте свои эндпоинты на BOLA: запросите чужой ресурс.
- Добавьте лимиты и максимальные размеры запросов.
- Включите dependency scanning (
dotnet list package --vulnerable).
Вопросы с ответами
Что такое BOLA/IDOR?
Доступ к чужому объекту подменой идентификатора из-за отсутствия проверки владельца.
Что такое SSRF?
Атака, когда сервер делает запросы по адресу, заданному атакующим (в том числе к внутренней сети или метаданным облака).