Почему код от ИИ обязательно проверять человеку (и это нормально)
Почему код от ИИ обязательно нужно проверять человеку (и это нормально)
Сейчас в разработке софта творится настоящая революция. Claude, ChatGPT и умные IDE на базе агентов позволяют превращать идею в рабочий код за пару дней, а не недель. Опиши фичу, прими изменения, доработай — и готово. Скорость растёт взрывно.
Но есть подвох.
Недавно я разбирал такой код: простой внутренний инструмент, не супер-критичный, но типичный для 2024 года. Ничего страшного вроде "ИИ взбунтовался" не случилось. Просто 28 ошибок, в основном по безопасности. И почти все — из старых категорий OWASP Top 10, которые висят там с нулевых.
Это не про опасности ИИ. Это про то, как молниеносная скорость фич обгоняет размышления о том, чтобы эти фичи не стали бомбой замедленного действия.
Проблема не в ИИ, а в вопросах, которые ты не задал
Код выглядел круто. Архитектура логичная, компоненты разложены грамотно, библиотеки выбраны верно. Если бы я сам слепил такое за выходные, разница была бы незаметна.
Разница в другом слое. В том, что происходит до первой строки кода.
ИИ мастерски выполняет задачу. "Сделай систему управления пользователями" — и вот она готова. Но он не спросит сам: кто имеет доступ? Какие данные чувствительные? Где аутентификация? Что если обойти фронт?
ИИ выдаёт фичу. Без архитектуры безопасности, от которой можно спать спокойно.
Пример из жизни: админ-функция без защиты
Представь: serverless-функция для админки — создание юзеров, сброс паролей, удаление аккаунтов. Обычное дело. Команда правильно спрятала мощные ключи на сервере, не в браузере.
Но проверки аутентификации в функции — ноль.
Не слабая, не неправильная. Совсем никакой. Любой с DevTools найдёт endpoint, кинет POST — и создаст админа, сольёт пароли или сотрёт базу.
На фронте кнопка админки скрывалась для не-админов. Всё выглядело безопасно. И было бесполезно — UI-защита это иллюзия.
Классический обход авторизации, в списках уязвимостей с 2003-го. Почему ИИ не заметил? Промпт был: "сделай функцию для админов по созданию юзеров". Она это делает. И для не-админов тоже — потому что не сказано обратного.
Суть: ИИ не угадывает твои упущения.
База данных, безопасная на словах
Ещё один случай. БД с row-level security — крутая штука, ограничивает доступ к строкам по ролям. Идеально, когда фронт шлёт API-ключ в JS.
Инженер попросил ИИ добавить мультиюзерность. ИИ написал миграции, создал таблицы с RLS. Отлично.
Но пять старых таблиц с реальными данными — нет. RLS там могла быть, могла нет. Миграция не проверила, не включила, не напомнила.
Запусти npm run db:push на чистой инфе — новые таблицы в замке, старые нараспашку для всех с доступом к API.
ИИ не ошибся. Просто решил узкую задачу, не спросив: "а всё остальное защитить?"
Что менять в своей практике
Это не призыв бросить ИИ. Скорость — золото. Но нужен контроль: опытные инженеры смотрят на архитектуру, а не только на синтаксис.
Что работает:
Составь чеклист по безопасности до старта. Кто зовёт endpoint? Что если без прав? Данные для всех? RLS на всех таблицах? Фиксируй предположения заранее, не в ревью.
Старшие делают threat modeling, а не ковыряют строки. Мои 28 багов — не опечатки. Архитектурные промахи. ИИ генерит код, люди думают о рисках.
Уточняй auth/authz в промптах. Не "endpoint для юзеров", а "endpoint для юзеров только для залогиненного админа, опиши предположения по auth". ИИ покажет логику.
Тестируй авторизацию отдельно. Проверяй, что без прав — ничего не выйдет. Не только что с правами работает.
Главный паттерн
ИИ не пишет уязвимый код. Он идеально делает то, что просишь. И пропускает то, о чём не спросил.
Это плюс, а не минус — инструмент послушный, не выдумывает. Но ответственность на тебе. ИИ исполняет твои решения по безопасности в масштабе.
В том коде человеку хватило сказать "endpoint без auth". Фикс — минуты. Старая дыра 20 лет встретила workflow 2024-го — и workflow победил. Благодаря вниманию опытного.
Так и будет дальше: ИИ для скорости, люди для архитектуры. Оба нужны.
Хочешь избежать таких ловушек в проекте? В NameOcean мы помогаем растущим стартапам с доменами и хостингом, где безопасность встроена в основу. Наш cloud hosting с rate limiting, управлением API-ключами и аудитом работает из коробки — даже если команда спешит и забывает. Один пункт меньше в списке забот.