Риски кода, сгенерированного ИИ: контрольный список перед внедрением

Модель генерирует код, который выглядит убедительно и часто работает. Именно поэтому его недостатки так легко упустить.
Безопасность
Сгенерированный код может пропускать проверку данных, составлять запросы к базе так, что они уязвимы для инъекций, сохранять пароли без надлежащего хеширования или выдавать слишком широкие права. Модель училась на огромном количестве кода, в том числе низкого качества, и не всегда отличает пример из учебника от решения для продакшена.
Секреты в репозитории
API-ключи и пароли, вставленные в файл «на минутку», могут попасть в историю репозитория. Храните их в переменных окружения, добавьте конфигурационные файлы в игнорируемые и проверяйте историю, прежде чем публиковать проект.
Несуществующие зависимости
Модели способны выдумывать названия пакетов. Если кто-то зарегистрирует такое имя и поместит в пакет вредоносный код, установка «предложенного» пакета становится вектором атаки. Прежде чем добавить незнакомую библиотеку, проверьте, кто её поддерживает, как давно она существует и сколько людей ею пользуется.
Приватность данных
Вставляя в инструмент фрагменты кода, логи или данные клиентов, вы отправляете их внешнему поставщику услуг. Изучите его правила обработки данных и не вставляйте ничего, что вам нельзя передавать наружу.
Лицензии
Сгенерированный фрагмент может напоминать код, на который распространяется конкретная лицензия. Правовые вопросы вокруг кода, созданного ИИ, всё ещё уточняются и различаются в зависимости от юрисдикции, поэтому в коммерческих проектах стоит проконсультироваться с юристом.
Технический долг
Самый дорогой побочный эффект — это код, которого никто в команде не понимает. Через полгода, когда его придётся менять, окажется, что непонятно, почему он делает то, что делает.
Контрольный список перед внедрением
- Понимаю ли я, что делает каждая часть кода, которую внедряю?
- Проверяются ли все данные от пользователя?
- Нет ли в репозитории ключей, паролей или персональных данных?
- Существует ли каждая добавленная зависимость и поддерживается ли она?
- Есть ли тесты, проверяющие самые важные сценарии?
- Просмотрел ли изменения кто-то другой?


