Skip to content

Agent 如何防 Prompt 注入 ​

2026-09-02 11:37:50

问题根源 ​

对于模型来说所有的输入都会转换成token处理,模型从架构上是分不清哪些是数据哪些是指令,光加限制词是没用的,治标不治本。

解法 ​

纵深防御,四层防线叠着来

输入层 ​

隔离+检测:东西没过模型 先检测过滤一遍

1.结构隔离 ​

不可信的内容不要直接写入到 prompt,放进结构化字段用专门的标签包裹标记,让模型明确知道这段是数据,不是命令

2.分类器扫描 ​

独立检测模型或规则引擎,识别诱导性指令、越狱模版

3.拦截或降级 ​

全拦截误杀概率太高,按风险三挡分流,安全和体验兼得

  • 确认恶意 命中攻击特征,直接拒绝进行拦截并记录
  • 可疑 附加风险标记,降级后进入后续处理
  • 正常 无风险,正常进入模型处理

模型层 ​

  • 让模型自己可以识别哪些是恶意指令,进行对抗训练,在模型训练微调阶段大量混入攻击样本,对这样的样本全部标注为危险直接拒绝执行
  • 训练模型理解优先级概念,系统指令最大,用户输入最小,当用户输入攻击内容时被模型认为优先级低于系统指令优先级,也不会再进行处理
  • 对敏感/危险操作进行二次确认提问,你确认要****吗?

执行层 ​

最硬的一层:权限管控,注入成功也做不了破坏

  • agent 只给可完成当前任务的最小权限,不给管理员/root权限
  • 能调用什么工具,能传什么参数,能调什么接口,都要经过白名单校验,每一次调用都要通过检测关卡
  • 高危操作要人工审核确认
  • 沙箱+读写分离,敏感操作在沙箱里跑,读写用不同的凭证和通道,写操作走更严格的审批流程

输出层 ​

  • 过滤敏感信息:生成内容返回给用户之前再扫描一遍,将危险敏感信息过滤掉
  • 全链路追溯:从输入到分类器判决、模型推理、工具接口调用,全链路日志记录形成审计链,出现问题方便进行溯源
  • 实时监控异常危险操作立刻告警

总结 ​

前两层处理降低模型中招的概率,执行层是最硬的一层:权限管控,注入成功也做不了破坏,输出层进行兜底,哪怕出了问题也可以进行追踪溯源

Released under the MIT License.