ИИ-инструменты отлично генерируют работающий код. С безопасным кодом у них дела обстоят хуже. Дело не в том, что они плохие — дело в том, что безопасность — это про то, чего вы не делаете, а ИИ оптимизирует под то, что вы хотите получить.
Вот что я чаще всего встречаю при ревью кодовых баз, написанных с помощью ИИ.
Захардкоженные секреты повсюду
Это самая распространённая проблема. ИИ-модели предлагают код с API-ключами, URL баз данных и токенами прямо в исходных файлах. Даже если вы потом их перенесёте, если они хоть раз попали в коммит — они навсегда останутся в истории git.
Решение: Используйте переменные окружения с самого начала. Запустите сканер секретов (gitleaks, trufflehog) на вашем репозитории. Если что-то было раскрыто — немедленно ротируйте ключи.
Никакой валидации ввода
ИИ генерирует код, который доверяет пользовательскому вводу. Поля форм, параметры запросов, тела API-запросов — всё это передаётся напрямую в запросы к базе данных или рендерится в HTML без санитизации.
Решение: Валидируйте и санитизируйте данные на каждой границе системы. Используйте библиотеку для валидации (Zod, Joi, class-validator). Никогда не вставляйте пользовательский ввод напрямую в SQL или HTML.
Аутентификация, которая проверяет только «счастливый путь»
ИИ-сгенерированная аутентификация обычно обрабатывает вход и регистрацию. Она редко корректно обрабатывает истечение токенов, не предотвращает фиксацию сессий и часто имеет непоследовательные проверки авторизации на разных маршрутах.
Решение: Используйте проверенные библиотеки аутентификации вместо написания своей. Если вам нужна кастомизация — тестируйте «несчастливые пути»: истёкшие токены, невалидные сессии, попытки повышения привилегий.
CORS настроен на разрешение всего
Access-Control-Allow-Origin: * — это дефолт ИИ, потому что так всё работает. В продакшене это означает, что любой сайт может делать запросы к вашему API от имени ваших пользователей.
Решение: Настройте CORS на ваш реальный домен(ы). Явно укажите разрешённые методы и заголовки.
Нет ограничения частоты запросов
ИИ не думает о злоупотреблениях. Ваш эндпоинт логина, API-маршруты и отправка форм — всё это открыто для брутфорса и исчерпания ресурсов.
Решение: Добавьте rate limiting на чувствительные эндпоинты. Большинство хостинг-платформ предлагают это на уровне инфраструктуры, или используйте middleware в вашем фреймворке.
Зависимости с известными уязвимостями
ИИ-модели обучены на старом коде. Они предлагают пакеты, у которых могут быть опубликованные CVE. Они также склонны подключать больше зависимостей, чем нужно, расширяя поверхность атаки.
Решение: Запустите npm audit (или аналог). Удалите неиспользуемые зависимости. Зафиксируйте версии и настройте автоматическое обновление зависимостей.
Всё это — не причины отказываться от ИИ-инструментов. Это причины, чтобы человек проверил критически важные для безопасности части перед релизом. ИИ быстро доводит вас до 80% результата. Оставшиеся 20% — это то, где живёт реальный риск.
Хотите ревью безопасности вашего проекта, созданного с помощью ИИ? Закажите технический ревью — я пройдусь по вашей кодовой базе и дам приоритизированный список того, что нужно исправить.
Нужна помощь с подготовкой проекта к продакшену?
