惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Cisco Talos Blog
Cisco Talos Blog
V
V2EX
C
Check Point Blog
GbyAI
GbyAI
D
Docker
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
B
Blog RSS Feed
H
Hackread – Cybersecurity News, Data Breaches, AI and More
N
Netflix TechBlog - Medium
T
Troy Hunt's Blog
博客园 - Franky
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Microsoft Security Blog
Microsoft Security Blog
P
Privacy & Cybersecurity Law Blog
WordPress大学
WordPress大学
The Cloudflare Blog
S
SegmentFault 最新的问题
Latest news
Latest news
Microsoft Azure Blog
Microsoft Azure Blog
P
Proofpoint News Feed
I
InfoQ
博客园 - 【当耐特】
NISL@THU
NISL@THU
A
About on SuperTechFans
T
Tailwind CSS Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
The Hacker News
The Hacker News
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Scott Helme
Scott Helme
雷峰网
雷峰网
C
CXSECURITY Database RSS Feed - CXSecurity.com
Security Latest
Security Latest
V
Vulnerabilities – Threatpost
Security Archives - TechRepublic
Security Archives - TechRepublic
A
Arctic Wolf
Hacker News: Ask HN
Hacker News: Ask HN
N
News and Events Feed by Topic
IT之家
IT之家
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
aimingoo的专栏
aimingoo的专栏
T
Threat Research - Cisco Blogs
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
阮一峰的网络日志
阮一峰的网络日志
SecWiki News
SecWiki News
大猫的无限游戏
大猫的无限游戏
S
Security Affairs
The Register - Security
The Register - Security
www.infosecurity-magazine.com
www.infosecurity-magazine.com
L
LINUX DO - 热门话题
T
Tor Project blog

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания Автономность как точка невозврата: кто будет субъектом в цифровом будущем Обучение ИИ в «диких» условиях: как рутинные действия превращаются в датасеты Как измерить LLM для задач кибербеза: обзор открытых бенчмарков Где хранить код? Сравнение GitHub, GitLab и Bitbucket Математика объясняет, почему нормальное распределение встречается повсюду Почему ваш FinOps не работает: 12 тезисов от практиков Как подписать проектную документацию УКЭП с использованием бесплатных лицензий Pilot Адаптивное администрирование Sigla Vision Я грузил уран в бочки, а потом 20 лет строил ИТ в атомной отрасли Чем позвонить с Эвереста? История и обзор спутниковой связи. Часть 2 Как языковая модель помогает контролировать качество инструктажей по охране труда в металлургии Как не передать на desktop свой IP в РКН Анатомия SAP Privileges: как устроено управление правами в macOS MoneyDev: Сказка про три главных слова Обновлённый токенизатор видео K-VAE 2.0 от Сбера Как сделать диспетчеризацию дома на 1284 квартиры почти бесплатно Как мы разогнали железную дорогу Мы дали агентам рутину. Теперь надо решить — что делать с освободившимся временем Токсичный контент, промпт-хакинг и защита ИИ — всё о Guardrails для LLM Умный город начинается с точного взгляда: как «Фалькон Тех» меняет пространство к лучшему Навайбкодил приложение для анализа графов Почему Дюну так интересно читать? Упрощаем работу с рутиной или как стать Гендальфом Белым Деконструкция Go: CPU, RAM и что там происходит. Go Assembler база. Часть 1.1 Какие профессии исчезнут из-за ИИ, а какие появятся? И что с этим делать Как мы построили IT-отдел, где хочется расти: архитектурные встречи, прозрачные метрики и книжные подарки Rufler: Делаем из Claude Code автономный рой через один YAML-конфиг Sing-box и белый список приложений Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise OpenAI строит MLM-пирамиду, а McKinsey и Accenture помогают ей в этом Дом, который не построил Фишер (Часть 2) «Сверхзвуковой математик» против «Вдумчивого логиста»: битва алгоритмов 3D-упаковки Мультимодальные модели – грубый и дорогой инструмент Разговоры ничего не стоят. Код тоже Проверки физических лиц: с кого начнет ФНС Топ-10 бесплатных нейросетей для создания видео в 2026 году Первые слои кода: как наши решения сегодня определяют архитектуру ИИ на десятилетия Разработка нового статического анализатора: PVS-Studio JavaScript Поиск уязвимостей ПО: базовый минимум или роскошный максимум Почему оценка персонала не работает как инструмент управления Как мы разработали ИИ-ассистента и сократили рутину продуктовой команды на 50% Как я ушел из найма, нажарил косточек и продал на маркетплейсах на 168 млн в год Когда 1С:ERP уже внедрена, а нормального производственного плана всё ещё нет Как я сделал Claude мультимодальным, подключив к нему Qwen Omni Как приглашение на вакансию мечты превращается в атаку Infrastructure as Code: философия и лучшие практики IaC Тестируем Yandex Code Assistant на задаче, в которой нужно хранить секреты nxs-universal-chart v3.0: новое поколение универсального Helm-чарта Callback Injection: Техника, которая отправила Microsoft Defender в глухой нокаут «Все идеи на стол»: митап как способ вывести проект из тупика Сегодня я узнал нечто новое о GPU благодаря багу в своей игре Как заставить LLM ̶ ̶г̶а̶л̶л̶ю̶ ̶ эволюционировать Карта событий как фундамент аналитики: практический кейс для E-commerce Что выбрать для AI: x86, ARM или RISC-V? Дайджест железа за март Роль соматических мутаций в развитии аутоиммунных заболеваний: путь к избирательной терапии Mythos от Anthropic — тревожный сигнал для всех, а не только для банков Guardrails для LLM на Java: как приручить промпт‑инъекции и токсичные ответы Green-VLA: как мы собрали VLA-модель для реального антропоморфного робота и не потеряли обобщение Финансовая гонка вооружений: почему умные люди добровольно в ней участвуют Эра ИИ-агентов наступила: выбираем лучшего цифрового сотрудника # Практический опыт внедрения WinCC Redundancy на производственном предприятии Сделал MVP за 3 дня, а потом неделю прикручивал оплату. Оно того стоило? Физика против Маска: почему Starship V3 может оказаться ещё одной катастрофой Нефть Венесуэлы: крупнейшие запасы в мире, но не крупнейшая нефтяная держава JPA 4. Переосмысление Hibernate Почему зеркальная фотокамера Nikon D5 десятилетней давности идеально подошла для миссии «Артемида-2» Проект «Уровень-Спутник» или как мы сделали платформу для гидрологов «Замедлиться, чтобы ускориться»: почему ИИ повышает цену ошибок в требованиях и архитектуре Как с нуля поднять трафик IT-компании на 1657% при бюджете 55 тыс. и выжить Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь
API-безопасность 2026: почему защита требует нового подхода
LukaSafonov · 2026-04-23 · via Все публикации подряд на Хабре

Уровень сложностиПростой

Время на прочтение12 мин

Охват и читатели891

Ретроспектива

Ещё пять лет назад Gartner предсказывал, что эксплуатация уязвимостей API станет самым частым вектором взлома приложений и сервисов. Сегодня этот сценарий атак стал практически нормой. Из-за этого API превратились в полноценный бизнес-актив, к которому, по-хорошему, должны применяться те же требования по безопасности и надёжности, что и к любому другому продукту. Однако на практике с этим возникают проблемы.

По данным Salt Security, большинство компаний за последний год столкнулись с инцидентами, связанными с безопасностью API. При этом сами интерфейсы продолжают быстро расти и усложняться, а защита за этим ростом не всегда успевает. В таких условиях даже корректные запросы могут приводить к утечкам данных или обходу ограничений. Особую тревогу вызывает рост ИИ-уязвимостей, где API выступают основным каналом взаимодействия — а значит, и потенциальной точкой атаки.

В статье разберу актуальные техники и тактики атак на API и рассмотрю, какие практики стоит внедрять уже сейчас для защиты веб-приложений.

Ключевые методы атак на API

Сообщество OWASP мониторит риски API и обновляет список угроз в виде OWASP API Security Top 10. Хотя последний рейтинг выпустили в 2023 году, он до сих пор не теряет актуальности. Половина всех уязвимостей в списке OWASP связана с аутентификацией и авторизацией (логины, пароли, токены).

И так посмотрим, как трансформировались техники атак на API, и какие инциденты всплывали в публичном поле за последние несколько лет.

API1: Broken Object Level Authorization (ex IDOR — Insecure Direct Object Reference)

Суть уязвимости. Система контролирует, что пользователь аутентифицирован, но не проверяет, имеет ли он право работать именно с запрашиваемым объектом. Злоумышленнику достаточно изменить идентификатор в запросе, чтобы получить доступ к конфиденциальным данным.

BOLA не случайно в топе OWASP. Согласно последним исследованиям Salt Security на эту уязвимость приходится 27% всех атак на API.

Примеры атак. Первый инцидент произошёл с дилерским центром Volkswagen в Индии. В приложении для владельцев автомобилей обнаружили критическую BOLA-уязвимость. Чтобы зарегистрировать подержанный авто, нужно было ввести 4-значный код подтверждения. Система не ограничивала количество попыток, и скрипт перебирал все 10 тыс. комбинаций за секунды. Зная VIN-номер автомобиля, злоумышленник получал полный профиль владельца: историю обслуживания, телеметрию и текущее местоположение.

McDonald’s также столкнулся с атакой, включающей элементы BOLA. Компания использовала платформу найма, разработанную сторонним вендором. За счёт слабых или дефолтных учётных данных и манипуляций с идентификаторами, увидеть чужие персданные можно было, просто меняя ID соискателя в адресе страницы. В ходе атаки буквально за 30 минут были получены 64 млн резюме.

API2: Broken Authentication

Суть уязвимости. За счёт слабой или неправильно настроенной аутентификации злоумышленники могут выдавать себя за законных пользователей, получая полный доступ к их учёткам. Поводом для компрометации может послужить всё. Например, слабые токены и отсутствие проверки подписи или ограничений на попытки входа.

Примеры атак. Разработчик xAI случайно выложил на GitHub приватный ключ, дающий доступ к LLM SpaceX и Tesla. Ключ был доступен целых два месяца. Любой желающий мог запрашивать данные у более чем 60 приватных LLM, содержащих корпоративные данные. Подобный инцидент представляет собой классический пример утечки секретов. Причём утечки можно было избежать, если бы компания заранее позаботилась о базовых проверках безопасности в пайплайне разработки.

API3: Broken Object Property Level Authorization (BOPLA)

Суть уязвимости. Это более хитрая версия BOLA, эксплуатируя которую атакующие могут читать или изменять отдельные поля объекта, даже если подобные действия по умолчанию были недоступны текущему пользователю. Это может привести к эскалации привилегий, изменению критичных данных и обходу бизнес-логики приложения или сервиса.

Примеры атак. В Joplin Server нашли уязвимость CVE-2025-27134 из-за которой, любой пользователь мог отправить PATCH на /api/users/:id, подставить is_admin=1 и сразу получить админские права. Сервер нормально проверял доступ к самому объекту («пользователь»), но совершенно не следил за тем, какие именно поля ему разрешено менять.

API4: Unrestricted Resource Consumption

Суть уязвимости. Если API не накладывает ограничения на потребление ресурсов (количество запросов, объём данных, время выполнения операций и т.п.), то злоумышленники могут исчерпать CPU, память, пропускную способность сети или нагрузить базу данных так, что сервис упадёт или серьёзно деградирует. В результате простоя компания потеряет деньги и испортит репутацию.

Примеры атак. Уязвимость CVE-2025-8014 в GitLab затронула GraphQL-эндпоинты. Злоумышленник собирал «тяжёлый» запрос, который проходил валидацию и истощал ресурсы сервиса. По сути, один неограниченный запрос к API приводил к тому, что сервис просто ложился. Кейс лишний раз демонстрирует, что без жёсткого контроля за сложностью запросов даже один неосторожный вызов может стать точкой отказа системы.

API5: Broken Function Level Authorization (BFLA)

Суть уязвимости. Возникает, когда проверка ролей на уровне эндпоинта либо вовсе не настроена, либо реализована с ошибками. В итоге обычный пользователь может вызывать функции, предназначенные для админов. Например, вызов эндпоинта DELETE /api/admin/users/{id} заставит API без каких-либо проверок удалить учётки других пользователей, включая самих администраторов.

Примеры атак. В Cisco Data Center Network Manager уязвимость CVE-2020-3386 в REST API позволяла аутентифицированному пользователю с низкими привилегиями выполнять произвольные действия с административными правами. Функция была доступна после входа, но не была должным образом ограничена по роли.

API6: Unrestricted Access to Sensitive Business Flows

Суть уязвимости. Она проявляется, когда API не ограничивает доступ к критическим бизнес-функциям (создание транзакций, изменение балансов, одобрение кредитов и т.п.) на основе ролей или прав пользователя. Подобные ситуации могут возникать в регистрационных и профильных эндпоинтах (куда можно добавить «лишние» поля) или в логике обработки управляющих операций. Например, корректировка статусов заявок без проверок роли.

Опасность атаки в том, что она не использует технические уязвимости, а эксплуатирует слабости в бизнес-логике.

Примеры атак. Несколько лет назад во время предпродажи билетов на платформе Ticketmaster злоумышленники автоматизировали пользовательский сценарий через API (прохождение очереди, поиск доступных мест и их резервирование). Отсутствие ограничений позволило ботам массово резервировать билеты, не оплачивая их, блокируя доступ реальным покупателям. Инцидент привёл к срыву продаж, сбоям платформы и публичным разбирательствам в США.

На Bugcrowd в прошлом году описывался ещё один критический сценарий злоупотребления бизнес-логикой. Платформа возвращала UUID заявки на вход в организацию, а дальше всё шло по цепочке: пользователь мог вторым API-вызовом самостоятельно «одобрить» собственную заявку и даже получить права админа. Технического взлома как такового не требовалось — сработала ошибка в логике чувствительного бизнес-процесса.

API7: Server-Side Request Forgery (SSRF)

Суть уязвимости. С помощью SSRF (Server-Side Request Forgery) злоумышленник заставляет сервер делать запросы к внутренним ресурсам, которые должны быть недоступны извне. API принимает URL от пользователя, например, для скачивания аватарки или вебхука и делает запрос от своего имени. Атакующий подсовывает внутренние адреса и получает доступ к облачным метаданным, внутренним сервисам, базам данных.

Атака обходит периметровую защиту, так как запрос инициируется изнутри сети. Поэтому традиционные брандмауэры и сканеры не видят такие угрозы, считая трафик легитимным.

Примеры атак. Один из самых показательных кейсов — история Capital One: там SSRF-уязвимость позволяла атакующему обратиться к облачному сервису метаданных AWS от имени уязвимого компонента и получить учётки с избыточными правами. Это привело к масштабной утечке клиентских данных. Кейс часто цитируют как один из самых наглядных примеров того, как SSRF в API и облачных сценариях выходит далеко за пределы «простого запроса по URL».

API8: Security Misconfiguration

Суть уязвимости. Из-за незащищённых дефолтных настроек, открытых функций или ошибок окружения, система становится уязвимой. Подобные бомбы замедленного действия нередко скрыты в серверах, СУБД или облачных сервисах. Например, продакшен-логи с debug-режимом, публичная документация Swagger/Redoc, CORS с Access-Control-Allow-Origin и т.п.

Конфигурационные ошибки дают злоумышленнику доступ к данным о внутреннем устройстве системы и упрощают проведение атак. Последствия могут быть самыми печальными — начиная от утечек и заканчивая компромиссом системы или полным отказом в обслуживании. Например, тот факт, что Swagger UI доступен в продакшене и раскрывает все эндпоинты с примерами запросов, позволяет атакующим быстро понять структуру системы и найти уязвимости в авторизации.

Примеры атак. Злоумышленники массово сканировали интернет на предмет открытых Docker API, которые торчали без авторизации. Через такие интерфейсы они деплоили вредоносные контейнеры, включали майнеры и начинали собирать ботнет. По сути, одна ошибка в API-интерфейсе превратилась в полноценный вектор компрометации.

API9: Improper Inventory Management

Суть уязвимости. Мы не можем защитить то, о чём не знаем. Как следствие, забытые эндпоинты становятся «вратами» для хакеров: Zombie API, Shadow API, тестовые эндпоинты в продакшене. Их с «большой любовью» эксплуатируют злоумышленники.

Примеры атак. В 2025 году была раскрыта веб-скимминг кампания. Атакующие брали устаревший эндпоинт Stripe /v1/sources и прогоняли через него украденные карты, проверяя их перед выводом на свои серверы. Атака затронула как минимум 49 интернет-магазинов. Смысл кейса в том, что старый интерфейс продолжал жить рядом с новыми API и фактически стал «забытым» активом.

API10: Unsafe Consumption of APIs

Суть уязвимости. Уязвимость эксплуатирует концепцию безоговорочного доверия к данным внешних API. А если твоё API интегрируется со сторонними сервисами, то автоматически мы наследуем их уязвимости. В итоге злоумышленники могут внедрить вредоносную нагрузку через цепочку интеграций, чтобы украсть данные.

Примеры атак. Уязвимость CVE-2021-41248 в GraphiQL: клиентский инструмент небезопасно обрабатывал ответы schema introspection и мог выполнить внедрённый JavaScript-код. По сути, проблема возникала не из-за «плохого» пользовательского ввода, а из-за доверия к данным, пришедшим от внешнего GraphQL-эндпоинта.

Новые векторы угроз

По мере развития технологий классические угрозы API из OWASP Top 10 дополняются новыми векторами атак, которые требуют особого внимания.

Атаки на цепочку поставок. Многие организации до конца даже не осознают, какие именно зависимости хранят их API. Вредоносные зависимости в пакетах (npm, PyPI и другие) могут компрометировать всю инфраструктуру.

Риски ИИ-интеграции. По данным Postman, 89% разработчиков используют генеративный ИИ, но только 24% проектируют API специально под взаимодействие с ИИ-агентами. Выходит, что большинство интерфейсов по умолчанию уязвимы перед атаками, специфичными для ИИ-сред. Типичные примеры: prompt injection, отравление датасетов или утечки через контекст, когда конфиденциальная информация может попасть в обучающие данные.

Проблемы версионности. В 2025 году 82% организаций так или иначе внедрили подход API-First. Доля тех, кто работает строго по этой модели, за год подскочила с 12% до 25% (в сравнении с 2024 годом).

Обратная сторона этого процесса — резкий рост количества версий, которые нужно поддерживать. На практике это выглядит так: несколько релизов API существуют параллельно, а старые эндпойнты, даже с закрытыми уязвимостями, остаются доступными «для совместимости». Этим и пользуются атакующие, целенаправленно выискивая и «дёргая» именно устаревшие реализации API .

Нарушения приватности. API часто логируют всё подряд, включая персданные. Если логи утекут, это чревато штрафами регуляторов и юридическими рисками.

Четыре ключевых подхода к защите API

Эффективная защита API требует системного подхода, который охватывает все этапы жизненного цикла приложения. Внедрение отдельных мер безопасности уже не помогает. Фрагментарная защита приведёт к тому, что мы будем пропускать уязвимости или обнаруживать атаки с опозданием.

Защита API не сводится к одному инструменту. Комплексный подход включает в себя несколько ключевых аспектов.

Первый кирпич этого защитного фундамента — инвентаризация API. Без актуальной карты всех эндпоинтов, включая забытые shadow и zombie API, невозможно получить полное представление о поверхности атаки.

Следом идёт регулярная проверка доступности, производительности, а также выявление аномалий в реальном времени. Причём простым сбором метрик тут уже не обойтись. Нужно анализировать поведение. Современные платформы на базе ML строят baseline для каждого интерфейса и пользователя. Как только ломается привычная последовательность операций, скачет частота запросов или доступ происходит в необычное время — система сразу генерит алерт.

Следующий элемент защиты — централизованная точка аутентификации, авторизации и управления трафиком (API Gateway). Шлюз централизует авторизацию, контролирует лимиты и маршрутизирует запросы, но считать его панацеей нельзя. Это лишь один слой, который обязан работать в связке с остальными компонентами.

И завершающий, но отнюдь не второстепенный штрих в наборе инструментов для защиты API — WAAP (Web Application and API Protection). В отличие от классического WAF, современные WAAP-решения объединяют функции WAF, API Gateway, bot management и DDoS protection, обеспечивая комплексную защиту.

Ключевое преимущество WAAP состоит в том, что мы получаем детальную телеметрию каждого вызова API с контекстом пользователя, приложения и сессии.

Для эффективного функционирования критически важно интегрировать с SIEM/SOAR все защитные компоненты, о которых я сказал выше. Это даёт ряд преимуществ:

  • единую точку видимости всех API-взаимодействий;

  • быстрое обнаружение аномалий и атак;

  • автоматизированное расследование инцидентов;

  • снижение нагрузки на SOC-аналитиков.

Ниже делюсь таблицей-шпаргалкой, которая связывает каждую угрозу из рейтинга OWASP с конкретными инструментами и подходами защиты.

Угроза

Инструменты и подходы к защите API

Примеры реализации защитных мер

API1: BOLA (Broken Object Level Authorization)

WAAP

Мониторинг последовательного перебора ID

Контекстная авторизация на каждом запросе

Непредсказуемые идентификаторы

Заменить /api/users/12345/profile на /api/me/profile для операций текущего пользователя

Использовать UUID вместо ID

Настроить правило: «если user_id в запросе ≠ user_id из токена, то блокировать»

Логировать и автоматически блокировать аномальные последовательности запросов к объектам

API2: Broken Authentication

OAuth 2.0 / OpenID Connect,многофакторная аутентификация

Короткоживущие токены

Rate Limiting на эндпоинтах входа

Мониторинг атак перебора

Secret scanning в CI/CD (GitGuardian, TruffleHog)

Отказаться от Basic Auth

Внедрить ограничения. Например, не более 5 попыток входа за 15 минут с одного IP

Использовать заголовок Strict-Transport-Security для защиты от атак SSL Strip

Запретить алгоритмическую диагностику в JWT: явно указывать `alg: RS256

Использовать короткоживущие токены, refresh-механизм и MFA для критичных операций

API3: BOPLA (Broken Object Property Level Authorization)

Валидация возвращаемых полей по белому списку

Защита от Mass Assignment

Строгая типизация параметров

Контроль доступа на уровне полей (особенно для GraphQL)

Для эндпоинта /api/users/{id} возвращать только поля из белого списка

При PATCH-запросе валидировать каждое поле: если пользователь пытается изменить role, то отклонить запрос

Использовать директивы авторизации (@auth) на уровне полей в GraphQL

API4: Resource Exhaustion

Rate Limiting на уровне пользователя и эндпоинта

Ограничения на размер запросов

Адаптивные лимиты на основе профиля

Ограничить запросы к /api/search. Например, не более 100 в минуту на пользователя

Установить лимит размера тела запроса. Например, max_request_size = 10MB

Для GraphQL ограничить глубину запросов и сложность

Ограничить время выполнения запросов (timeout)

Установить раздельные лимиты: на пользователя и на конкретный эндпойнт

API5: BFLA (Broken Function Level Authorization)

Контроль доступа на основе ролей (RBAC)

Проверка прав перед выполнением привилегированных функций

Разделение эндпоинтов по уровню привилегий

Вынести в отдельный префикс административные эндпоинты. Например, /admin/users/delete вместо /api/users/delete

Для токена с scope=readonly блокировать все методы, кроме GET

Проверять роль перед выполнением

Использовать middleware для обязательной проверки RBAC/ABAC перед write-операциями

API6: Business Flows

Контекстные проверки (геолокация, время, устройство)

Многоэтапная верификация

Мониторинг поведенческих аномалий

Анализ бизнес-логики

Требовать подтверждение по SMS или в приложении банка при оформлении заказа на определённую сумму

Блокировать массовое резервирование билетов

Проверять платёжеспособность при резервировании

Учитывать историю аккаунта при принятии решений (поведенческий профиль)

API7: SSRF (Server-Side Request Forgery)

Валидация всех входных данных

Ограничение URL по белому списку

Отключение ненужных сетевых протоколов

Мониторинг исходящих запросов

Разрешить только домены из белого списка для аватарки

Заблокировать запросы к внутренним адресам

Использовать библиотеки со встроенной защитой от SSRF. Например, ssrf-filter для Node.js

Запрещать редиректы на внутренние адреса (RFC1918/линк-локал)

Изолировать исходящие запросы API в отдельном сетевом сегменте

API8: Security Misconfiguration

Автоматизированные проверки конфигураций

Безопасное хранение секретов (Vault, KMS)

Регулярное обновление зависимостей

Сканирование на ошибки конфигурации

Настроить веб-сервер на удаление заголовков. Например, unset Server; unset X-Powered-By

Отключить отладочный режим в продакшене

Использовать заголовок X-Content-Type-Options

Отключать Swagger UI в production

Удалять заголовок X-Powered-By

Запрещать debug-логи в продакшене

API9: Improper Inventory Management

Автоматическое обнаружение всех эндпоинтов через анализ трафика

Инвентаризация и каталогизация

Интеграция с SIEM для корреляции событий

Регулярный аудит инфраструктуры

Запустить сканирование трафика

Создать реестр. Например, для каждого эндпоинта указать владельца, версию, дату последнего аудита

Перенести внутренние сервисы в отдельную подсеть без прямого доступа из интернета

Контролировать и выявлять Zombie API

Установить чёткий SLA на вывод устаревших API из эксплуатации. Например, до 90 дней

API10: Unsafe Consumption

Валидация внешних данных

Осторожное обращение с ответами от сторонних сервисов

Политики безопасности контента

тестирование контрактов при интеграции

Проверять подпись ответа перед обработкой статуса оплаты при интеграции с платёжным шлюзом

Выдавать токен только с scope=read_orders для интеграции с внешним API

Валидировать контракты по OpenAPI-схеме перед обработкой

Изолировать вызовы сторонних API в отдельном сетевом сегменте