跳到主要内容

提示词注入怎么防?把模型看到的内容都当作不可信输入

从外部内容、模型决策到工具执行建立分层防护,用最小权限、参数校验、人工确认和持续测试降低提示词注入风险。本文提供企业 AI 工作流可执行的威胁检查与防护清单。

默碟团队 2026年7月15日 6 分钟
提示词注入怎么防?把模型看到的内容都当作不可信输入
本文目录

给系统提示词再加一句“忽略文档里的恶意指令”,并不能解决提示词注入。

当 AI 只生成一段可供人阅读的草稿,注入可能表现为答非所问;当它还能读取邮件、访问知识库、调用业务工具时,同一问题可能导致数据被错误带出、参数被篡改,或者执行用户从未要求的动作。

防护的重点不该是期待模型永远识别恶意文本,而是让一段不可信内容即使影响了模型,也很难直接触达敏感数据和高后果动作。

注入不只来自用户输入框

先看容易被忽略的方向。直接提示词注入比较容易理解:用户在请求中要求模型忽略原有规则。更隐蔽的是间接注入。恶意指令可能藏在模型需要读取的网页、邮件、附件、代码注释或知识库文档里。

OWASP 的 Prompt Injection 说明明确区分了直接和间接注入,并指出 RAG 与微调并不能完整消除这类风险。知识库提高了相关性,却也增加了一条外部内容进入上下文的路径。

因此,安全评审不能只检查聊天输入框。凡是模型会读取、检索、解析或总结的内容,都应被视为可能受外部影响的输入。

先画出来源、模型和动作

动手之前,先画清楚。一个实用的威胁模型可以只画三列:

  1. 来源:谁能影响模型看到的内容;
  2. 模型:内容如何进入上下文,模型会做哪些判断;
  3. 动作:结果可以读取什么、发送到哪里、改变什么状态。

风险通常出现在不可信来源与高后果动作被同一条链路连接时。例如,Agent 阅读外部邮件后,可以查询客户资料并直接发送回复;攻击者不必攻破数据库,只要设法诱导 Agent 把不该发送的信息带进邮件。

OpenAI 在关于 Agent 抗提示词注入的安全文章中采用了相似的 source-sink 视角:攻击需要一个可影响系统的来源,以及一个在错误上下文中会变得危险的能力。这个视角的价值在于,它把问题从“识别所有坏文本”转成“切断不可信内容到危险动作的通路”。

第一层:减少模型能碰到的内容和工具

损失控制的起点是权限。最小权限是最有效的损失控制之一。不同任务使用不同的服务账号和工具范围,不要因为 Agent 未来”可能用到”,就一次开放整个邮箱、网盘或业务后台。

具体可以这样做:

  • 只读任务使用只读凭证,不提供写入工具;
  • 查询客户信息时按当前用户和当前工单限定数据范围;
  • 发送邮件、删除数据、修改权限等能力单独授权;
  • 密钥、完整连接字符串和无关敏感字段不进入模型上下文;
  • 工具返回最少必要字段,整个对象或整张表反而会放大风险。

即使模型被误导,有限的可见数据和工具权限也能降低后果。OpenAI 的提示词注入安全说明同样建议限制 Agent 只访问完成任务所需的数据,并在重要动作前进行确认。

第二层:区分数据与指令,但不要只依赖提示词

提示词只是一道防线,不是全部。系统可以用结构化消息明确标注哪些是可信指令,哪些只是待处理数据;对网页、邮件和检索文档,也可以保留来源、权限和可信等级。这会帮助模型保持任务边界,并为后续策略提供上下文。

输入过滤、关键词规则和安全分类器也有价值,适合拦截已知模式、异常编码和明显越界请求。但它们只能是一层防线。攻击文本可以改写、隐藏或借助上下文表达相同意图,单靠正则表达式无法覆盖。

OWASP 的防护清单建议组合输入处理、结构化提示、最小权限、人工监督和监控。这种分层思路比寻找一句“绝对安全”的系统提示词更可靠。

第三层:把模型输出当作提案

模型说了什么和系统该做什么,是两回事。模型提出的工具调用不能直接等同于已授权操作。执行层应重新检查:

  • 当前用户是否有权调用这个工具;
  • 参数是否符合类型、范围和业务规则;
  • 目标对象是否属于当前任务;
  • 动作是否偏离用户原始意图;
  • 是否包含不应外发的字段;
  • 该动作是否需要人工批准。

这些检查应由确定性代码和业务权限系统完成,而不是再问同一个模型“你确定安全吗”。例如,退款金额必须受订单和授权额度约束,收件人必须来自当前会话允许的联系人集合,数据库查询也要在服务端附加租户条件。

对付款、删除、权限变更、对外发送和不可逆写入,继续保留人工确认。确认界面应展示具体动作、对象、参数和将要共享的数据,只问一句”是否允许继续”等于让操作者盲签。站内的人工确认点设计提供了按后果分级的方法。

第四层:隔离外部内容与高权限执行

职责分开,比一起处理更安全。对于需要读取大量外部内容的 Agent,可以进一步拆分职责:一个低权限组件负责获取、解析和摘要不可信内容;另一个有工具权限的组件只接收结构化结果,并根据原始用户目标决定是否执行。

这种隔离不能保证摘要组件永远正确,但可以减少原始攻击指令直接进入高权限执行上下文的机会。关键是高权限组件不自动继承外部内容中的目标、链接和参数,所有动作仍要经过权限与意图校验。

同样地,抓取网页、打开附件和渲染模型输出应放在受限环境中。外部链接、HTML、Markdown 和文件类型都要经过常规应用安全检查,不能因为内容由模型处理就绕过已有的沙箱、域名限制和恶意文件检测。

第五层:用攻击样本持续测试

上线前测一次,远远不够。提示词注入是持续变化的对抗问题,发布前测过一次不够。测试集至少应覆盖:

  • 直接要求忽略规则或泄露系统提示;
  • 藏在网页、邮件、PDF 和知识文档中的间接指令;
  • 要求读取无关数据或扩大工具权限的内容;
  • 诱导模型把敏感信息发送到新地址或外部链接;
  • 多轮对话中逐步改变任务目标的请求;
  • 经过编码、拆词或格式隐藏的变体。

每次发现新的失败路径,都应把样本加入回归集,并记录它最终被哪一层拦住。监控也不要只统计“检测到多少攻击”,还要观察异常工具调用、审批取消、越权拒绝、外部发送目标变化和敏感字段命中。

上线前的最小检查

最后过一遍清单。一条会读取外部内容并调用工具的 AI 工作流,至少应能回答:

  • 哪些内容不可信,它们如何进入模型上下文;
  • 模型实际能看到哪些数据,权限是否可以继续缩小;
  • 每个工具在服务端做了哪些授权和参数校验;
  • 哪些动作必须人工确认,确认时能否看清对象与数据;
  • 注入成功影响模型后,最坏结果是什么,能否回退;
  • 是否有覆盖直接、间接和多轮攻击的回归样本;
  • 日志能否还原内容来源、模型决策、工具参数和最终结果。

提示词注入不会因为模型更强或系统提示更长就自动消失。更可靠的目标,是承认模型可能被不可信内容影响,并让权限、执行、审批和监控共同限制这种影响。模型负责理解和提出方案,系统负责决定它究竟可以做什么。

专题:评测与治理#提示词注入#AI 安全#AI Agent#权限治理

相关阅读