Почему сгенерированный AI код небезопасен по умолчанию
AI оптимизирует под промпт, который вы ему дали, а ваш промпт почти всегда говорит «сделай, чтобы работало», а не «сделай безопасно». Поэтому он выдаёт кратчайший путь к работающей функции. Кратчайший путь — обычно небезопасный: запросы, собранные конкатенацией строк, эндпоинт без проверки прав, секрет, вставленный прямо в код, потому что именно так был устроен пример, на котором он учился.
Дальше хуже, потому что AI учился на всём интернете — включая десятилетие туториалов и заброшенных репозиториев, которые сами по себе были небезопасны. Небезопасный код в его обучающих данных встречается чаще, чем безопасный, потому что безопасный код труднее писать и его реже выкладывают. Когда вы просите «форму логина», вы статистически скорее получите среднюю форму логина из интернета, а у средней формы логина в интернете есть проблемы.
У AI к тому же нет чувства угрозы. Человек, который делает загрузку файлов, ощущает укол тревоги — а вдруг кто-то загрузит какую-нибудь гадость? AI не ощущает ничего. Он пишет обработчик с одинаковой уверенностью, герметичен тот или дыряв насквозь. Никакой заминки, никакого «хм, вот эта часть меня нервирует». Нервозность придётся поставлять вам самим.
Вывод не в том, что «код AI опасен, не используйте его». Вывод в том, что «работает» и «безопасно» — это два разных вопроса, и AI отвечает только на первый, пока вы не заставите его ответить на второй.