Шлюз ревью безопасности
Вот одна привычка, которая превращает всё вышеперечисленное из тревоги в процесс: перед релизом заставьте AI атаковать собственный код. Модель, написавшая функцию, обычно может найти в ней дыры — просто не станет, пока вы не попросите. Переключите её из строителя в противника:
Ты написал этот эндпоинт. Теперь действуй как атакующий, пытающийся его сломать.
Перечисли все способы, которыми зловредный пользователь мог бы:
- прочитать или изменить данные, к которым не должен иметь доступ (дыры в авторизации)
- внедрить код через ввод (SQL injection, XSS, command injection)
- злоупотребить отсутствием валидации или ограничений по частоте запросов
Для каждого покажи точный запрос, который это эксплуатирует, а затем исправление.
Не успокаивай меня — исходи из того, что уязвимость ЕСТЬ, и найди её.
Последняя строка важна: оставленный нейтральным, AI склонен говорить «выглядит безопасно!». Если же сказать ему исходить из того, что изъян существует, он действительно идёт искать. Соедините состязательный прогон с коротким предрелизным чек-листом, который вы прогоняете по всему, что обращено к пользователю:
- Каждый эндпоинт проверяет авторизацию, а не только то, что пользователь залогинен
- Все запросы к базе параметризованы — никакого , собранного из строк
- Пользовательский ввод, выводимый на страницу, экранирован (никакой инъекции сырого HTML)
- Нет секретов в клиентском коде и ни одного закоммиченного в репозиторий
-
.envдобавлен в gitignore; любой утёкший ключ ротирован - Загрузки файлов проверяют тип и размер и используют сгенерированные имена
- Новые зависимости осмотрены на реальность существования и репутацию
Представьте этот гейт как последовательность, без прохождения которой ничего не выпускается. AI меняет шляпу строителя на шляпу атакующего, а затем автоматические сканы подстраховывают то, что мог пропустить человеческий проход:
код фичи
│
▼
┌──────────────────┐ "считай, что баг ЕСТЬ, найди"
│ АТАКА НА КОД │ дыры authz · инъекции · валидация
│ (ИИ-атакующий) │
└────────┬─────────┘
│ нашёл? ── да ──▶ чинить ──┐
│ нет │
▼ │
┌──────────────────┐ ◀─────────────────── ┘
│ АВТО-ПРОВЕРКИ │ скан секретов (gitleaks)·npm audit
│ (CI, каждый push)│ параметризовано? · секреты вне клиента?
└────────┬─────────┘
│ всё зелёно
▼
SHIP ✓ ── любой красный блокирует push ──
И запускайте сканер секретов перед push — инструмент вроде gitleaks (или встроенное сканирование вашей платформы) прочёсывает ваш код и историю на предмет того, что по форме похоже на ключи. Это однокомандная страховочная сетка для самой дорогой ошибки из списка, а сам процесс можно поручить AI встроить в (Continuous Integration — робот, который автоматически прогоняет ваши проверки каждый раз, когда вы пушите код), чтобы он запускался на каждый push.