AI 生成代码的安全审查

共 17 题
📑 题目列表 17 题
#
★★★

1. AI 生成代码的常见安全漏洞模式中 SQL 注入、XSS、命令注入、路径遍历

AI 生成代码中常见的 SQL 注入、XSS、命令注入、路径遍历等安全漏洞模式有哪些,如何识别与防范?

  • 掌握常见注入/遍历类漏洞的成因
  • 能识别 AI 代码中的不安全写法
  • 防护手段(参数化、校验、编码)

AI 生成代码常直接拼接输入而忽视安全编码。SQL 注入:把用户输入直接拼进 SQL 字符串;XSS:把用户输入直接插入 HTML 而不转义;命令注入:把输入拼进系统命令;路径遍历:用用户输入直接拼接文件路径。防护:SQL 用参数化查询/ORM;XSS 用输出编码或框架转义;命令注入用白名单参数、避免 shell 拼接;路径遍历用规范化路径并校验在允许目录内。AI 生成代码时要审查这些点,因为 AI 常复制"看起来能跑的拼接写法"而非安全写法。

这些漏洞的共同根因是"未对不可信输入做信任边界处理"。AI 易生成"功能正确但安全缺失"的代码,审查与防护应聚焦输入验证、参数化与输出编码,把安全规则作为 AI 生成与人工 review 的强制检查项。

// 危险:SQL 拼接注入
String sql = "SELECT * FROM users WHERE name = '" + name + "'";
// 安全:参数化查询
PreparedStatement ps = conn.prepareStatement("SELECT * FROM users WHERE name = ?");
ps.setString(1, name);
#
★★★

2. AI 辅助编程时代的安全编码核心中 Prompt 工程 + 人工审查 + 自动化扫描

AI 辅助编程时代,安全编码的核心如何由 Prompt 工程、人工审查与自动化扫描三者构成?

  • 理解三层安全防线
  • 各层的作用与互补
  • 落地的组合方式

核心是"Prompt 工程前置约束 + 自动化扫描兜底 + 人工审查把关"三层防线。Prompt 工程:在生成阶段就把安全要求写进 prompt(如"使用参数化查询、做输入校验、不要输出密钥"),从源头减少不安全生成;自动化扫描:用 SAST、依赖扫描、密钥扫描在 CI 中拦截不安全代码;人工审查:对安全敏感代码强制人工 review,验证业务语义与越权逻辑。三层互补:Prompt 降低生成环节风险,扫描拦截显性漏洞,人工捕捉扫描与 prompt 都覆盖不到的语义安全问题。

单靠任何一层都无法覆盖 AI 代码的安全风险。安全的"前置化"(prompt)降低发生率,"自动化"(扫描)提高检出率,"人工"(审查)补足语义盲区,三者构成纵深防御。

#
★★★

3. AI 生成代码的「安全上下文缺失」风险中 AI 不了解业务上下文时生成的鉴权与越权逻辑,如何通过权限矩阵对照审查及时发现?

AI 不了解业务上下文时生成的鉴权与越权逻辑存在"安全上下文缺失"风险,如何通过权限矩阵对照审查及时发现?

  • 理解"安全上下文缺失"的本质
  • 权限矩阵作为审查工具
  • 越权漏洞的识别方法

AI 生成鉴权/越权逻辑时,往往只看到"某接口需要鉴权",却不了解"谁有权访问哪些资源、什么角色可执行什么操作",因而可能生成"只验证登录、不验证权限"或"权限校验放错位置"的代码,产生水平越权(A 用户访问 B 用户数据)或垂直越权(低权限访问高权限接口)。审查方法:建立权限矩阵(角色 × 资源 × 操作 = 允许/拒绝),把 AI 生成的鉴权逻辑逐条对照矩阵,检查每个接口是否校验了正确的角色与资源归属;重点审"校验是否在服务端、是否基于对象级鉴权、是否校验了资源所有权"。

越权是 AI 代码中最隐蔽的安全风险,因为它在"登录成功"的路径上看似正确。通过权限矩阵把"业务上谁该能做什么"显式化,再对照 AI 生成代码,能系统性地发现"只做认证、不做授权"的缺陷。

// 危险:只验证登录,未验证资源归属
@GetMapping("/orders/{id}")
public Order getOrder(@PathVariable Long id) {
    return orderService.findById(id); // 越权:任何登录用户可取任意订单
}
// 安全:校验资源所有权
public Order getOrder(Long id, String currentUser) {
    Order o = orderService.findById(id);
    if (!o.getOwner().equals(currentUser)) throw new ForbiddenException();
    return o;
}
#
★★

4. 讲一次你用 AI 工具生成代码后通过 SAST 工具发现安全漏洞的经历

请讲述一次你用 AI 工具生成代码后,通过 SAST 工具发现安全漏洞的经历?

  • 用 SAST 扫描 AI 生成代码
  • 识别漏洞类型与修复
  • 理解 SAST 在 AI 工作流中的价值

例子:用 AI 生成一个文件上传接口,SAST(如 SonarQube/SpotBugs)扫描发现"未校验上传文件类型与大小"和"路径拼接存在路径遍历风险"等缺陷。随后人工确认漏洞可行性,补充文件类型白名单、大小限制与路径规范化,并加断言覆盖。这次经历说明:AI 生成代码"功能正确"但安全配置缺失,SAST 作为自动化门禁能在大规模 AI 代码中高效拦截这类显性漏洞,是 AI 工作流不可缺的一环。

SAST 的价值在于把安全规则变成"可自动执行的门禁",对 AI 批量生成代码尤其高效。但 SAST 有误报与漏报,需人工确认;实践上"AI 生成 + SAST 扫描 + 人工确认"是最实用的组合。

#
★★

5. 讲一次你建立"AI 生成代码"的安全审查流程的实践

请讲述一次你建立"AI 生成代码"安全审查流程的实践?

  • 设计 AI 代码安全审查流程
  • 流程的环节与门禁
  • 落地效果

流程大致为:①生成前——在规范与 prompt 中声明安全要求(禁用高危函数、须参数化、不可硬编码密钥);②生成后——自动跑 SAST、依赖扫描、密钥扫描、secret 检测,作为 CI 阻断门禁;③审查中——对安全敏感代码(鉴权、支付、上传、导入导出)强制人工 review,用权限矩阵与 OWASP 清单逐项核对;④发布前——对高危改动做安全回归与渗透测试抽查。落地后把"AI 生成代码必须过安全门禁"写入团队制度,使安全审查常态化而非事后补救。

安全审查流程的价值在于"前移 + 自动化 + 分级"。把安全要求前置到 prompt 与规范、用扫描自动化兜底、对高风险代码人工精审,形成从生成到发布的全链路安全治理。

#
★★

6. 讲一次你识别"AI 生成代码"中的常见安全问题(OWASP Top 10)的实战

请讲述一次你识别 AI 生成代码中常见安全问题(OWASP Top 10)的实战?

  • 用 OWASP Top 10 映射 AI 代码问题
  • 识别具体漏洞
  • 修复与验证

例子:用 AI 生成一个登录与数据查询模块,识别出多项 OWASP 问题:①身份认证失败(仅前端校验、无速率限制);②SQL 注入(拼接查询);③敏感数据泄露(日志打印密码明文);④安全配置错误(CORS 开放);⑤越权(未做对象级授权)。逐项修复:参数化、服务端校验、加 bcrypt 与限流、收紧 CORS、补对象级鉴权,并加测试验证。实战要点是把 AI 代码显式映射到 OWASP Top 10 清单逐一核对,避免遗漏。

OWASP Top 10 提供"安全缺陷分类字典",用它对 AI 代码逐项核对,能把模糊的"看看有没有问题"变成系统性的检查,提高识别覆盖率与可解释性。

#
★★

7. AI 生成代码的安全审查清单中输入验证、输出编码、密钥管理、依赖安全

AI 生成代码的安全审查清单应包含哪些项,如输入验证、输出编码、密钥管理与依赖安全?

  • 掌握安全审查清单的核心维度
  • 各维度的具体检查点
  • 清单的落地

审查清单核心维度:①输入验证——所有外部输入是否做类型、长度、格式、白名单校验,服务端是否校验(不依赖前端);②输出编码——输出到 HTML/URL/JSON 前是否按上下文编码,防 XSS;③密钥管理——密钥/口令是否硬编码、是否用环境变量或密钥管理服务(如 Vault/AWS KMS)、日志是否泄露敏感信息;④依赖安全——第三方依赖是否有已知漏洞、版本是否可追溯、来源是否可信。审查时逐项打勾并记录证据,形成可复用清单,作为 AI 生成代码合并前的强制检查项。

清单把安全审查"可执行化"。输入验证与输出编码是防注入与 XSS 的第一道闸,密钥管理防敏感泄露,依赖安全防供应链,四者覆盖了 AI 代码最常见的四类安全短板。

#
★★

8. AI 生成代码的安全风险中提示注入与漏洞模式?

AI 生成代码与 AI Agent 应用面临哪些安全风险,如提示注入与漏洞模式?

  • 理解提示注入的概念与危害
  • AI Agent 的漏洞模式(越权、过度代理)
  • 应用层防护

提示注入(Prompt Injection)指攻击者通过输入/外部内容诱导 AI 偏离系统指令,执行恶意操作。在 AI Agent 应用中,风险模式包括:直接/间接提示注入(通过用户输入或外部网页内容注入指令)、过度代理(AI 被诱导调用越权工具)、敏感信息泄露(AI 把系统提示或隐私数据输出)、工具滥用(AI 调用具有危险副作用的工具)。防护:把系统指令与不可信输入隔离、对输出做过滤与校验、收敛工具权限(最小权限、白名单)、对 AI 决策加人工确认与审计、对敏感操作设二次审批。

提示注入是 AI 应用特有的新型攻击面,与经典注入不同,它攻击的是"指令与数据未分离"。防护思路是把"指令层"与"数据层"隔离并收敛 AI 的权限边界,与通用安全设计一致。

#
★★

9. AI 安全审查的自动化门禁中 SAST、依赖扫描与 AI 审查三重门禁在 CI 中的执行顺序、阻断规则与人工复核兜底如何设计?

AI 安全审查的 SAST、依赖扫描与 AI 审查三重门禁在 CI 中的执行顺序、阻断规则与人工复核兜底如何设计?

  • 设计三重门禁的执行顺序与阻断规则
  • 理解各门禁的定位与互补
  • 人工复核兜底

执行顺序建议:先跑轻量快的门禁(如依赖扫描、lint),再跑 SAST 与 AI 审查,最后由人工复核高风险项。依赖扫描放在最前,能快速拦截已知漏洞;SAST 检测代码级漏洞;AI 审查帮助发现语义/越权类问题。阻断规则:依赖漏洞(高危/严重)与 SAST 高危漏洞设为强制阻断;中等风险设告警并限期修复;AI 审查意见按置信度分级,高危意见阻断、中低告警。人工复核兜底:对任何"机器判定通过"但涉及敏感操作/权限/资金的高危改动,强制人工 review,避免自动化误判或漏判。整体形成"快慢结合、自动阻断、人工兜底"的门禁体系。

三重门禁要"按成本与速度排序、按严重度设阻断"。让快速检查前置拦截明显问题,让 AI 审查补充语义盲区,并始终保留人工兜底,才不会被自动化误报或漏报误导。

#
★★

10. OWASP Top 10 for LLM Applications 的完整漏洞类别(LLM01 提示注入、LLM02 敏感信息泄露、LLM03 供应链、LLM04 数据与模型投毒、LLM05 不当输出处理、LLM06 过度代理、LLM07 系统提示泄露、LLM08 向量与嵌入弱点、LLM09 错误信息、LLM10 资源滥用)如何转化为 AI 生成代码与 AI Agent 应用的专项审查清单、测试用例与运行时防护(输入清洗、工具权限收敛、输出过滤)?

OWASP Top 10 for LLM Applications 的十个漏洞类别如何转化为 AI 生成代码与 AI Agent 应用的专项审查清单、测试用例与运行时防护?

  • 理解 LLM Top 10 十个类别
  • 转化为审查清单与测试用例
  • 运行时防护措施

将十个类别映射为可执行项:LLM01 提示注入→审查输入隔离,测试用例注入恶意指令,防护用输入清洗与指令/数据分层;LLM02 敏感信息泄露→审查日志与输出,防护用输出过滤与脱敏;LLM03 供应链→审查模型与依赖来源,用 SBOM 与版本锁定;LLM04 数据/模型投毒→审查训练与 RAG 数据源,防护用数据校验;LLM05 不当输出处理→审查输出编码与校验,防 XSS/命令注入;LLM06 过度代理→审查工具权限,用最小权限与工具白名单;LLM07 系统提示泄露→审查系统提示是否可被套取,防护用边界与监控;LLM08 向量与嵌入弱点→审查 RAG 数据检索相关性,防护用隔离与过滤;LLM09 错误信息→审查错误输出是否泄露内部信息,防护用统一错误处理;LLM10 资源滥用→审查成本/配额,防护用速率限制与配额控制。运行时防护统一为"输入清洗、工具权限收敛、输出过滤"三件套。

OWASP LLM Top 10 把 LLM 应用安全系统化。关键是把它从"清单"落地为"测试用例 + 运行时防护",即每个类别都要有对应的审查动作、可验证的测试和线上防护手段,才能形成可执行的安全治理。

#

11. 讲一次你用 AI 工具辅助"代码安全审计"的局限性

请讲述一次你用 AI 工具辅助"代码安全审计"时遇到的局限性?

  • 认识 AI 在安全审计中的局限
  • 具体局限案例
  • 应对方式

例子:用 AI 辅助审计一个鉴权模块,AI 能指出明显的硬编码密钥、缺少输入校验等显性问题,但对"业务级越权""鉴权时序缺陷""跨模块的权限依赖"等需理解业务上下文的漏洞识别不足,甚至产生误报(把正常逻辑判为漏洞)或漏报(对复杂业务逻辑的漏洞视而不见)。对策是:把 AI 定位为"辅助初筛",用人工专家基于业务上下文做最终判断,并用 SAST/渗透测试补充,不把 AI 的"无漏洞结论"当作安全结论。

AI 在安全审计中是"辅助者"而非"裁判"。它能高效覆盖显性、模式化的漏洞,但缺乏业务语义与全局上下文,易漏报/误报复杂问题;因此审计结果必须由人工确认,安全结论不能轻信 AI。

#

12. 讲一次你设计"AI 辅助 + 人工审计"双层安全审查的实践

请讲述一次你设计"AI 辅助 + 人工审计"双层安全审查的实践?

  • 设计双层审查机制
  • 明确 AI 与人工分工
  • 流程落地

设计为"AI 初筛层 + 人工精审层"。第一层:AI 对代码做快速安全扫描,输出疑似问题清单(含位置、类型、置信度),过滤掉明显正常的代码;第二层:安全专家对 AI 标记的高风险项与关键敏感模块(鉴权、支付、上传)做人工精审,结合业务上下文判断真伪并修复。AI 初筛提升覆盖面与效率,人工精审保证准确率与业务正确性。流程上设置"AI 标记高危 → 必须人工复核"的硬规则,防止自动结论直接通过。

双层审查的本质是"AI 扩覆盖、人工保准确"。AI 把有限的专家精力聚焦到最可能的问题上,人工兜底业务语义,二者结合既提升效率又控制漏洞逃逸。

#

13. 讲一次你用 AI 工具生成"安全测试用例"的实战

请讲述一次你用 AI 工具生成"安全测试用例"的实战?

  • 用 AI 生成安全测试用例
  • 用例的有效性验证
  • 与人工设计的结合

例子:用 AI 为登录接口生成安全测试用例(SQL 注入 payload、XSS 输入、弱口令、越权请求等),人工补充验证用例的预期是否正确(如注入应返回 400/500 而非数据泄露)。随后用这些用例跑回归,发现并修复了若干真实漏洞。经验是 AI 能快速铺开常见攻击样本,但需人工确认"预期行为"与"覆盖范围",避免漏掉业务特有攻击路径,且要结合自动化扫描与人工渗透形成完整覆盖。

AI 擅长生成"常见攻击模式"的测试样本,能快速提升测试覆盖;但安全测试的"预期"与"业务路径"需人工把关,把 AI 生成的样本与人工设计的针对性用例结合,才是完整的安全测试策略。

#

14. AI 生成代码的"版权"与"许可证"风险

AI 生成代码存在哪些版权与许可证风险?

  • 理解版权与许可证风险来源
  • 应对策略
  • 合规意识

风险来源:AI 训练数据可能包含受版权保护或特定许可证的代码,AI 生成时可能"复刻"这些代码,导致输出可能侵犯版权或携带传染性许可证(如 GPL)。应对:用许可证扫描工具识别依赖与有争议代码的许可证;保留生成记录与来源标记便于追溯;对高风险算法/库实现比对"相似度";在政策层面明确禁区(如不得生成与专有代码逐字相似的内容、谨慎引入传染性许可)。最终合规需结合法律团队评估,技术上是"扫描 + 追溯 + 政策"组合。

版权与许可证风险是 AI 生成代码的隐性合规成本。它不体现在运行结果上,而体现在"代码来源不清"上;通过扫描、追溯与政策约束,才能把这类风险控制在可接受范围。

#

15. AI 代码的审查重点中依赖、鉴权与输入校验?

AI 代码的审查重点是否应聚焦依赖、鉴权与输入校验?

  • 理解审查重点的优先级
  • 各重点的检查内容
  • 审查方法

是的,这三项是 AI 代码审查的高优先重点。依赖:检查是否引入不必要的/过新的/有已知漏洞的第三方库,版本是否锁定、来源是否可信;鉴权:检查是否做服务端鉴权、是否做对象级授权(防越权)、权限校验是否放在正确位置;输入校验:检查所有外部输入是否做类型/长度/格式/白名单校验,且校验在服务端而非仅前端。这三项是 AI 代码最易出错且影响安全的核心点,审查时优先逐项核对。

依赖、鉴权与输入校验分别对应供应链、授权与注入三类高频风险,是"少而关键"的审查重点。聚焦这三项能高效拦截 AI 代码中最常见、影响最大的安全问题。

#

16. AI 代码的验证中测试、扫描与人工复核?

AI 代码的验证应如何通过测试、扫描与人工复核组合进行?

  • 理解三重验证手段
  • 各自作用与互补
  • 组合落地

AI 代码验证用"测试 + 扫描 + 人工复核"三层。测试:单元/集成测试验证逻辑正确,覆盖率与变异测试保证断言有效;扫描:SAST 查安全漏洞、静态分析查复杂度与坏味道、依赖扫描查供应链;人工复核:验证业务语义、架构合理性、越权等扫描与测试覆盖不到的判断性问题。组合上:测试与扫描作为自动门禁拦截显性问题,人工复核兜底语义与架构,三者不能互相替代。

验证要"分层互补"。测试验证"逻辑对不对",扫描验证"规则与安全合不合规",人工验证"业务与架构正不正确",三者覆盖了 AI 代码从语法到语义的完整风险面。

#

17. AI 生成代码的供应链中来源与许可?

AI 生成代码的供应链风险(来源与许可)如何管理?

  • 理解 AI 引入的供应链风险
  • 来源与许可的治理
  • SBOM 等工具

AI 生成代码可能引入"来源不明"的第三方依赖或算法,带来供应链风险(恶意包、已知漏洞、不兼容许可)。管理手段:对 AI 生成的依赖做来源核验(是否官方、是否在可信仓库、签名是否有效);用 SBOM(软件物料清单)记录依赖清单与版本;用依赖扫描识别已知漏洞(CVE);用许可证扫描识别许可风险;对 AI 引用的代码/库做版本锁定与可追溯。同时建立"AI 引入第三方代码须经人工确认"的门禁,防止供应链被污染。

AI 让供应链风险从"开发者主动引入"变为"AI 隐式引入",更需系统治理。来源核验、SBOM、漏洞与许可扫描、版本锁定构成完整的供应链防线。