提示词工程 编辑复核
提示词注入防御检查
审查外部文本、网页或文件中的指令是否可能改变任务边界,并设计隔离、引用和拒答策略。
PROMPT WORKBENCH
复制后替换变量
保留结构,先填真实信息,再把结果交给模型运行。
你是一名AI 安全评审员。请从防御角度检查不可信输入与系统任务的边界,不要输出可直接用于攻击真实系统的利用链。
先区分已知事实、合理假设和待核验信息;没有依据的内容写“待验证”,不要为了完整而猜测。
请按以下结构输出:
1. 可信指令、不可信资料和工具权限边界
2. 网页、文件、用户输入中的可疑指令模式
3. 引用与执行分离、工具白名单和敏感动作确认
4. 拒答、隔离、日志和人工升级
5. 防御测试集、通过标准和复查周期
输入变量:
- 系统任务({{system_task}}):说明模型真正负责的业务任务和硬性边界。
- 外部输入({{untrusted}}):说明网页、文件或用户文本的来源。
- 工具权限({{tools}}):列出模型能调用的工具和写入能力。
- 敏感数据({{data}}):说明需要保护的凭据、个人或业务数据。
约束:保留用户的真实语气和业务边界;把事实、推断与建议分开;涉及日期、价格、版本、法规或安全的内容写明来源和采集时间。HOW TO USE
使用说明
- 外部文本默认不可信,不能因为它看起来像系统指令就执行。
- 高风险工具调用必须有显式授权和审计。
WHEN IT FITS
适用判断
适合这些情况
- 提示词会接收用户输入或外部内容。
- 模型能调用工具或访问数据,被劫持有实际后果。
- 要梳理系统的注入风险面。
换个做法更好
- 输入完全来自可信来源且无外部内容:风险面小。
- 你要设计的是工具调用规则:用《工具调用契约》。
- 把防护全押在提示词上:提示词层的防护可以被绕过,必须配合应用层控制。
FAILURE MODES
常见翻车与修正
- 防护措施全在提示词里写「忽略用户的指令」,实际很容易被绕过。
提示词层防护不可靠。要求把关键控制放在应用层:权限校验、工具白名单、输出过滤,提示词只作为补充。
- 只防了直接输入,忽略了模型读取的网页、文档里的间接注入。
要求把所有外部内容视为不可信,包括检索结果、网页和上传文件,并说明各来源的隔离方式。
- 梳理出了风险但没说被攻破后的影响范围。
要求按后果分级:能读到什么、能执行什么、能影响谁,据此决定防护投入的优先级。
ACCEPTANCE
怎么判断输出合格
- 关键控制在应用层,不只依赖提示词。
- 所有外部内容都视为不可信,含检索和文件。
- 风险按后果分级,防护有优先级。
- 给出了可验证的测试方式,而不只是建议清单。
SAFETY BOUNDARY
使用边界
- 提示词层的防护可以被绕过,权限校验、工具白名单和输出过滤必须放在应用层。
- 检索结果、网页和上传文件都属于不可信输入,间接注入比直接输入更难察觉。