Перейти к содержимому
Skip to content
← Все статьи

Безопасность API: лучшие практики защиты

API документацию (Application Programming Interface) стал основой современных веб-приложений. Через API работают мобильные приложения, SPA-сайты, интеграции между сервисами и IoT-устройства. Но с ростом использования API растёт и количество атак на них. В этой статье разберём ключевые практики защиты API от наиболее распространённых угроз.

Почему безопасность API важна

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

Типичные последствия компрометации API:

Аутентификация и авторизация

OAuth 2.0 и OpenID Connect

OAuth 2.0 — стандарт авторизации, позволяющий приложениям получать ограниченный доступ к ресурсам пользователя без передачи пароля. OpenID Connect добавляет слой аутентификации поверх OAuth 2.0.

Ключевые рекомендации:

JWT (JSON Web Tokens)

JWT широко используется для передачи информации об аутентификации. Однако неправильное использование JWT создаёт серьёзные уязвимости:

ОшибкаРискРешение
Алгоритм «none»Обход подписиЯвно указывайте допустимые алгоритмы
Симметричный ключ (HS256) со слабым секретомПодбор ключаИспользуйте RS256/ES256 или длинный секрет
Хранение в localStorageXSS-атаки могут похитить токенИспользуйте httpOnly cookies
Отсутствие проверки expБессрочные токеныВсегда проверяйте срок действия
Чувствительные данные в payloadPayload не зашифрован, только подписанНе помещайте пароли, email в JWT

API-ключи

API-ключи подходят для идентификации приложения, но не для аутентификации пользователя. Рекомендации:

Rate Limiting — ограничение частоты запросов

Rate limiting защищает API от злоупотреблений, DDoS-атак и брутфорса. Без ограничений один клиент может перегрузить сервер или перебрать все возможные значения.

Стратегии rate limiting

Заголовки rate limiting

Информируйте клиентов о лимитах через стандартные заголовки:

X-RateLimit-Limit: 100
X-RateLimit-Remaining: 42
X-RateLimit-Reset: 1678886400
Retry-After: 30

При превышении лимита возвращайте HTTP 429 (Too Many Requests) с заголовком Retry-After.

CORS — Cross-Origin Resource Sharing

CORS определяет, какие домены могут обращаться к вашему API из браузера. Неправильная настройка CORS — одна из самых распространённых уязвимостей API.

Критически важные правила:

Проверить CORS-заголовки вашего API можно с помощью анализатора HTTP-заголовков enterno.io.

HTTPS и TLS

Все API-запросы должны проходить через SSL/TLS проверку. Это не рекомендация, а требование. HTTP-трафик может быть перехвачен и модифицирован в любой точке между клиентом и сервером.

Рекомендации по настройке TLS:

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

Каждый параметр API-запроса — потенциальный вектор атаки. Никогда не доверяйте данным от клиента.

Правила валидации

Пример валидации с JSON Schema

{
  "type": "object",
  "required": ["email", "name"],
  "properties": {
    "email": {
      "type": "string",
      "format": "email",
      "maxLength": 255
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "pattern": "^[\\p{L}\\s-]+$"
    },
    "age": {
      "type": "integer",
      "minimum": 0,
      "maximum": 150
    }
  },
  "additionalProperties": false
}

Защита от типичных атак

Broken Object Level Authorization (BOLA)

Самая распространённая уязвимость API по OWASP API Security Top 10. Атакующий изменяет ID объекта в запросе и получает доступ к чужим данным.

Защита: проверяйте не только аутентификацию, но и авторизацию для каждого объекта. Пользователь с валидным токеном не должен иметь доступ к данным другого пользователя.

Mass Assignment

Клиент отправляет поля, которые не должен изменять (например, role: "admin" или price: 0). Защита: явно определяйте список допустимых полей для каждого эндпоинта.

Excessive Data Exposure

API возвращает больше данных, чем нужно клиенту, полагаясь на фронтенд для фильтрации. Защита: возвращайте только необходимые поля, используйте DTO (Data Transfer Objects).

Логирование и мониторинг

Без адекватного логирования вы не обнаружите атаку и не сможете провести расследование.

Что логировать:

Чего не логировать: пароли, токены, номера карт, персональные данные в открытом виде.

Чек-лист безопасности API

  1. Все эндпоинты работают через HTTPS
  2. Аутентификация реализована через OAuth 2.0 или JWT с правильной конфигурацией
  3. Авторизация проверяется для каждого ресурса (BOLA-защита)
  4. Rate limiting настроен на всех публичных эндпоинтах
  5. CORS корректно ограничивает разрешённые домены
  6. Все входные данные валидируются по схеме
  7. API не возвращает лишние данные
  8. Логирование охватывает все важные события
  9. API-ключи и секреты хранятся безопасно
  10. Документация API актуальна и не раскрывает внутреннюю архитектуру

Проверьте сами

Проверьте заголовки безопасности вашего API с помощью анализатора HTTP-заголовков enterno.io — убедитесь, что CORS, HSTS и другие заголовки настроены правильно.

Проверьте ваш сайт прямо сейчас

Проверить →
Другие статьи: Безопасность
Безопасность
Заголовки безопасности: CSP, HSTS, X-Frame-Options и другие
10.03.2025 · 32 просм.
Безопасность
WAF: что это и как защищает сайт
14.03.2026 · 12 просм.
Безопасность
HSTS и список предзагрузки: полное руководство по внедрению
16.03.2026 · 21 просм.
Безопасность
Content Security Policy (CSP) — полное руководство по настройке
12.03.2026 · 14 просм.