Архитектура & Стек••8 мин

Защита ИИ-агентов: как не слить 100 000 ₽ на спам-атаках

Алексей Самарцев
Алексей СамарцевАвтор
Основатель Samartsev AI
Написать в Telegram →
Ключевые тезисы статьи (TL;DR за 30 секунд)
  • Открытый чат с LLM без защиты позволяет злоумышленнику сжечь месячный баланс токенов за 30-40 минут простым скриптом.
  • 3 уровня скользящих лимитов (импульсный по IP, сессионный по чату, суточный) полностью нейтрализуют флуд и атаки раздувания контекста.
  • Реализация на чистом PostgreSQL экономит оперативную память VPS и не требует развертывания отдельного Redis.
  • При срабатывании лимита возвращается HTTP 429 с точным временем ожидания и отправляется мгновенный алерт инженеру в Telegram.

Открытый веб-чат с умным ИИ-ассистентом на корпоративном сайте - это главная точка входа для потенциальных клиентов, но одновременно и прямая финансовая уязвимость. Каждый входящий запрос пользователя запускает цепочку генерации токенов в платной LLM. Простой цикл в 15 строк на Python или атака школьников-энтузиастов способны сжечь месячный депозит API за 30-40 минут.

Большинство разработчиков запускают чат-виджеты без базовых защитных барьеров. Вебхук принимает POST-запрос, сразу отправляет промпт во внешнюю модель и ждет ответ. Ниже - разбор трехуровневой системы Rate Limiting на чистом PostgreSQL, которая отсекает флуд-атаки без развертывания отдельного Redis и экономит бюджет компании.

Кот-инженер безопасности защищает серверы ИИ-агента от флуда и спам-атак
Надежный контур безопасности: блокировка спам-скриптов со статусом HTTP 429 до вызова платных LLM

1. Анатомия угрозы: как сжигается баланс токенов

В отличие от классических веб-сайтов, где флуд нагружает только CPU сервера, в диалоговых системах каждый запрос стоит реальных денег. Выделим 3 типовых сценария слива депозита:

  • ✦ Скриптовый флуд (Loop Attack): ботнет или скрипт с циклом while True отправляет бессмысленные сообщения («Привет», «тест», случайный набор символов). 1 000 сообщений в минуту с контекстом RAG сжигают до 20-30 млн токенов в час.
  • ✦ Атака раздувания контекста (Context Expansion): злоумышленник копирует длинные тексты (война и мир, многостраничные ТЗ) и заставляет LLM обрабатывать максимальное окно контекста на каждом шаге диалога.
  • ✦ Бесконечные петли инструментов (Agent Loop Trap): при интеграции с CRM или базами данных провокационный промпт заставляет агента вызывать тяжелые функции поиска десятки раз подряд.

2. Почему Redis часто избыточен на первом этапе

Классическая рекомендация из учебников - поставить Redis рядом с n8n или Node.js бэкендом. Но для большинства корпоративных внедрений на выделенном VPS с 2-4 ГБ RAM это создает лишние проблемы:

  1. 1. Потребление оперативной памяти: n8n с Node.js уже требует 1-1.5 ГБ RAM. Дополнительный контейнер Redis и менеджер очередей съедают еще 500-800 МБ, приближая сервер к Out-Of-Memory падению.
  2. 2. Сложность сопровождения: нужно настраивать резервное копирование двух баз данных вместо одной, следить за политикой eviction (maxmemory) и сохранять консистентность.
  3. 3. Возможности PostgreSQL: в базе данных n8n уже есть штатный PostgreSQL. Благодаря CTE (Common Table Expressions) и индексам по timestamp атомарная проверка скользящего окна занимает 1.5-2 миллисекунды. Этого с запасом хватает для нагрузки в 500-1000 обращений в минуту.

3. Архитектура: 3 уровня скользящих лимитов

Грамотная защита строится по принципу эшелонированной обороны. Если заблокировать только суточный лимит, злоумышленник сожжет деньги в первую минуту. Если ограничить только частоту в секунду, бот будет слать по 1 сообщению в 2 секунды целыми сутками.

Уровень 1. Импульсный лимит (Burst Limit)
Правило: максимум 10 запросов за 60 секунд с одного IP-адреса.
Задача: моментально остановить скрипты с бесконечными циклами и автоматизированные генераторы флуда.
Уровень 2. Сессионный лимит (Session Flow)
Правило: максимум 15 запросов за 5 минут в рамках одного диалога (Session ID).
Задача: защита от раздувания памяти диалога и атак типа Prompt Injection с многократным перебором паролей.
Уровень 3. Суточная квота (Daily Quota)
Правило: максимум 100 запросов в сутки на одного посетителя.
Задача: ограничение общего финансового риска от одного источника. Если клиенту требуется больше - система мягко предлагает перевести диалог на менеджера.

4. Что видит пользователь и как реагирует Telegram

При срабатывании лимита вебхук возвращает стандартный код ответа HTTP 429 Too Many Requests. В теле ответа передается дружелюбное объяснение и оставшееся время ожидания:

{
  "status": 429,
  "error": "Too Many Requests",
  "message": "Вы отправили слишком много сообщений подряд. Пожалуйста, подождите 45 секунд или оставьте телефон для связи с инженером.",
  "retry_after_seconds": 45
}

Параллельно n8n отправляет беззвучный алерт дежурному инженеру в закрытый Telegram-чат с указанием подозрительного IP, геолокации и частоты запросов. При необходимости администратор нажимает кнопку «Заблокировать IP на 24 часа» прямо из мессенджера.

Безопасность продакшена

Нужен защищенный контур ИИ-агентов под ключ?

Развернем отказоустойчивую инфраструктуру в РФ по 152-ФЗ с фильтрацией спама, контролем расхода токенов и интеграцией с вашей CRM или 1С.

Инфраструктура & 152-ФЗ РФ

Архитектура защищенного контура Samartsev AI

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

#3

Санитайзер 152-ФЗМодуль деперсонализации

Стек: RegEx Sanitizer + PII Masking

⚡ Задержка узла: 30 мс
Защита и соответствие 152-ФЗ РФ

Автоматически вырезает телефоны, ФИО и медицинские данные до отправки в сеть.

Гарантия надежности Samartsev AI

Все компоненты разворачиваются на сервере заказчика (Self-Hosted). Никаких сторонних подписок и риска блокировки аккаунтов.

Калькулятор уязвимости и перерасхода LLM API

Оцените риск неконтролируемого расхода токенов и атак на ваших открытых ИИ-ассистентов.

Клиенты уходят к конкурентам, пока ваши менеджеры спят. ИИ-агент отвечает за 2 секунды круглосуточно.

500
25 000 ₽
40%

40% - высокий показатель - срочно нужна автоматизация.

Вы теряете в месяц

5 000 000 ₽

Это 60 000 000 ₽ в год - годовой ФОТ 2-3 менеджеров.
ИИ-агент решает ту же задачу - с окупаемостью от 1 месяца.

Обсудить расчет в Telegram →
Расчёт основан на средних данных по рынку РФ за 2026 год.
Понравился материал? Поделитесь с коллегами:

Частые вопросы по теме

Чем Rate Limiting на PostgreSQL лучше Redis для малого и среднего бизнеса?

Он не требует дополнительной оперативной памяти под отдельный Redis-контейнер и использует уже запущенный в связке с n8n PostgreSQL. Атомарные CTE-запросы отрабатывают за 2 миллисекунды, чего достаточно для стабильной защиты без усложнения инфраструктуры.

Заблокирует ли система реального клиента, если он быстро пишет несколько сообщений подряд?

Нет. Лимит в 10 сообщений за 60 секунд комфортно покрывает поведение живого человека, печатающего короткими репликами. Блокируются только автоматические скрипты и агрессивный флуд.

Как система защищает от распределенных атак с сотен разных IP-адресов?

Помимо фильтрации по IP работает сессионный скоринг (по идентификатору диалога) и глобальный предохранитель общего суточного бюджета токенов, который останавливает нештатный перерасход баланса.

Что видит посетитель чата при превышении лимита сообщений?

Пользователь получает вежливое сообщение со статусом HTTP 429 и таймером до следующей отправки, а также возможность сразу оставить номер телефона для звонка дежурного менеджера.

Читайте также

Все статьи блога →