在过去的几年里,人工智能已经稳步进入了全球经济的几乎每个部分。电子邮件程序使用它来即时纠正语法和拼写,并建议整个句子来完善每条消息。数字助理使用它为用户提供类似人类的对话界面。当您联系任何企业的联络中心时,您都会遇到它。您甚至可以让您的手机在用尽自动支持选项并需要实时代理时等待您。
因此,难怪人工智能也已经出现在普通软件开发人员的工具包中。如今,有无数的 AI 编码助手有望减轻开发人员的负担。根据其创建者的说法,这些工具应该可以帮助软件开发人员和团队更快地工作并产生更可预测的产品结果。然而,它们也做了一些不太理想的事情——引入安全漏洞。
这是软件开发公司和独立编码人员才刚刚开始处理的问题。现在,似乎有一个二元选择。要么使用人工智能编码助手并接受后果,要么放弃它们并冒着落后于使用它们的开发人员的风险。目前,调查显示,大约96%的开发人员已经选择了前者。但是,如果有其他选择呢?如果您可以在不损害输出的情况下降低使用 AI 编码助手的风险,那会怎样?这是一个开发人员可以用来实现这一目标的简单框架。
仔细评估您的 AI 工具降低 AI 编码助手带来的风险的第一种方法是在生产中使用您正在考虑的任何工具之前对其进行彻底调查。最好的方法是将该工具与一些开发项目并行使用,以查看结果如何与人工创建的代码叠加。这将为您提供一个机会来评估该工具的优点和缺点,并寻找任何可能使其无法满足特定开发需求的持续输出问题。
这个简单的审查程序应该可以让您选择适合您计划赋予它的任务的 AI 编码助手。它还应该在影响实时项目之前提醒您与该工具相关的任何重大安全编码缺陷。如果这些缺点微不足道,您可以使用所学知识来清理来自该工具的任何代码。如果它们很重要,您可以继续评估其他工具。
加强代码审查和验证流程接下来,在开始在生产中使用 AI 编码助手之前,必须加强代码审查和验证流程。这应该包括对您生成的所有代码(尤其是包含 AI 生成的代码的任何代码)进行传递的多个静态代码分析。这应该可以帮助您捕获大多数无意中引入的安全漏洞。它还应该让您的人类开发人员有机会阅读 AI 生成的代码,理解它,并在继续前进之前指出它的任何明显问题。
代码审查和验证过程还应包括动态测试,一旦每个项目达到可行的程度。这将帮助您评估代码在现实世界中存在的安全性,包括任何可能引入其他漏洞的用户交互。
让您的 AI 工具保持最新状态最后,您应该创建一个流程,以确保您始终使用所选 AI 工具的最新版本。AI 编码助手的开发人员一直在进行更改,旨在提高其工具生成的代码的可靠性和安全性。这样做符合他们的最大利益,因为任何可追溯到他们工具的有缺陷的代码都可能导致开发人员放弃它以支持竞争对手。
但是,您也不应盲目地更新工具集。跟踪 AI 编码助手更改的任何更新非常重要。您永远不应该假设您正在使用的工具的更新版本仍然适合您的特定编码需求。因此,如果您发现任何可能需要重新评估该工具的更改,这正是您应该做的。
如果您无法承受没有您选择的 AI 编码助手足够长的时间来重复您开始的审查过程,请继续使用旧版本。但是,您应该让新版本执行相同的编码任务并比较输出。这应该可以让您对更新的更改将如何影响您的最终软件产品有一个不错的了解。
底线实际上,人工智能代码生成不会消失。相反,它可能很快就会成为每个开发团队工作流程中不可或缺的一部分。然而,我们还没有达到人类编码人员应该盲目信任人工智能同行的工作成果的地步。通过采取谨慎的方法并深思熟虑地集成 AI 工具,开发人员应该能够获得这些早期 AI 工具的回报,同时将自己与它们非常真实的缺点隔离开来。
原文标题:A Framework for Maintaining Code Security With AI Coding Assistants
原文链接:https://dzone.com/articles/a-framework-for-maintaining-code-security-with-ai
作者:Philip Piletic
编译:LCR