Не бойтесь, что ИИ заменит разработчиков программного обеспечения

Разработчики всегда ищут способы сделать больше с меньшими усилиями. Это часто заставляет их искать инструменты, которые могут помочь им быть более эффективными и продуктивными. Хотя это желание найти наилучший способ достижения цели достойно восхищения, его также можно рассматривать как лень. В конце концов, зачем прилагать дополнительные усилия, если что-то может сделать это за вас?

Одним из таких инструментов является код, генерируемый GPT, который в последние годы становится все более популярным. Хотя этот тип кода может сэкономить время, он также сопряжен с рядом рисков.

Хотя некоторые люди опасаются, что искусственный интеллект (ИИ) полностью заменит разработчиков программного обеспечения, это не реальная угроза. ИИ может быть мощным инструментом, помогающим разработчикам программного обеспечения стать более эффективными. Тем не менее, он не может заменить знания и опыт, которые может предложить только разработчик программного обеспечения.

Давайте погрузимся и исследуем его вместе!

По запросу «Написать промежуточное ПО JWT с использованием токенов RSA на языке go» ChatGPT сгенерировал следующий код.

Код, сгенерированный ChatGPT, выглядит хорошо и хорошо работает как промежуточное ПО JWT, использующее токены RSA на языке Go. Это впечатляющий результат, учитывая сложность программного обеспечения для кодирования, которое включает в себя так много различных компонентов.

Истинные угрозы ИИ остаются завуалированными в тонкостях, и для выявления этих рисков требуется опыт в этой области. В противном случае человек может использовать код с пятью ошибками и двумя уязвимостями, не подозревая об этом.

Я выделю это для вас:

Ошибка 1: первоначальный промах — это устаревшие данные.

ИИ опирается на старые наборы данных, которые могут быть устаревшими на пять или даже десять лет. Это может создать проблему, поскольку программирование развивается ускоренными темпами — тогда ИИ может выводить решения на основе устаревшей информации, делая их устаревшими или даже потенциально опасными. В некоторых случаях это приводило к катастрофическим последствиям.

Как видно из строки 7, для Go используется известная библиотека JWT. К сожалению, эта библиотека устарела из-за критических уязвимостей безопасности, которые невозможно устранить.

С 2021 года эта библиотека больше не поддерживается и не должна использоваться. Хотя это знает каждый опытный программист на GoLang, искусственный интеллект еще не догнал его. Однако в ближайшие 5–10 лет это может измениться!

Ошибка 2: IA необходимо знать о стандартах и ​​ссылках.

Как вы можете видеть, он получает заголовок авторизации и пытается использовать значение в качестве токена. К сожалению, это неверно.

В соответствии со стандартом RFC6750 токены обозначаются префиксом Bearer, чтобы отличить их от других типов токенов.

Этот код должен проверять и извлекать префикс перед использованием значения, чтобы максимизировать эффективность.

Ошибка 3: ИИ повторяет ошибки людей

Давайте посмотрим на строку номер 20.

Когда я попросил ChatGPT сгенерировать программный код для промежуточного программного обеспечения JWT с использованием токена типа RSA, он вместо этого использовал токен HMAC (код аутентификации сообщений на основе хэша).

Токен HMAC генерирует хэш-значение с секретным ключом и использует его для подписи полезной нагрузки. Он менее безопасен, чем токен RSA, поскольку его процесс проверки не требует закрытого ключа для подписи и шифрования, что делает его уязвимым для злонамеренных атак.

Самая большая угроза, исходящая от ИИ, заключается в том, что разработчики программного обеспечения могут доверять его советам, не осознавая, насколько они могут быть ошибочными. Это особенно верно для неопытных разработчиков программного обеспечения, которые могут воспринимать советы ИИ как истину евангелия. В приведенном выше примере неопытные разработчики программного обеспечения могут полагать, что код, сгенерированный ChatGPT, использует токен RSA, а не токен HMAC.

Ошибка 4: ИИ удовлетворяет только ваш запрос.

В строках 24 и 29 код отправляет запросчику код состояния. Хотя это технически приемлемо, это определенно не идеальный подход.

Хорошая обработка ошибок и предоставление более подробной информации об ошибках — это передовая практика, которую разработчики программного обеспечения должны стремиться включить в свой код. Это важно для разработки программного обеспечения, особенно при работе с программным обеспечением, которое включает сложные компоненты, такие как облачная среда. Это не только помогает разработчикам программного обеспечения лучше понять причину ошибки, но также помогает им быстро выявлять ошибки в программном обеспечении и исправлять их.

Ошибка 5: А как насчет «Далее»?

В строке 34 видно, что токен используется только один раз, чтобы проверить, действителен ли он.

К сожалению, есть несколько вещей, которые можно было бы улучшить в этом подходе.

Во-первых, проверка уже завершена в строке 19. Функция ParseWithClaims вернет ошибку, если токен недействителен. Дополнительная проверка не повредит, так что давайте забудем об этом.

Проблема, с которой мы сталкиваемся, заключается в том, что токен, упомянутый в этом коде, необходимо использовать позже в коде. Сила токена JWT заключается в его полезной нагрузке: так называемых претензиях JWT. JWT Claims предоставляет бесценные данные о токене и пользователе, которые необходимы для аутентификации и предоставления разрешений пользователям.

Это ПО промежуточного слоя должно передать проанализированный токен последующим обработчикам. Но это не так.

Решение от разработчика.

Вот код, который я написал за 15 минут:

Фрагмент кода можно найти здесь.

Краткое содержание.

При разработке программного обеспечения важно учитывать значение ИИ и то, как его можно использовать на практике. Хотя искусственный интеллект может помочь разработчикам программного обеспечения стать более эффективными, им все равно следует проявлять осторожность при использовании его в качестве инструмента. ИИ может совершать такие ошибки, как несоблюдение стандартов или использование устаревших библиотек с уязвимостями безопасности.

В конечном счете, для разработки программного обеспечения требуется команда экспертов, понимающих важность эффективных процессов для создания высокоэффективных продуктов. Искусственный интеллект следует использовать как еще один инструмент, помогающий разработчикам программного обеспечения стать более эффективными, а не полностью их заменять.

Понимая ошибки, которые может совершать ИИ, и предпринимая необходимые шаги для их исправления, разработчики программного обеспечения могут гарантировать создание безопасных и надежных продуктов. Поскольку разработка программного обеспечения продолжает развиваться, разработчикам важно быть в курсе последних тенденций разработки программного обеспечения и сохранять непредвзятость при использовании ИИ.

PS: Этот текст написан с помощью двух ИИ: Jasper AI и Grammarly.

#AI #OpenAI #ChatGPT #Разработчики #Эффективность #Экспертиза #Процессы #Разработка продукта