Prompt 防御:三层拦截实战
目标
Prompt 注入无法靠单一机制防住,常见做法是叠加输入过滤、System Prompt 安全约束和输出泄漏检测三层防护。拒绝攻击时统一使用平台语境措辞,不暴露检测逻辑,能降低被持续探测的风险。
操作步骤
输入层识别明显攻击并缩小信任边界
输入层可以拦截已知的恶意模式、限制长度和类型,并把用户内容、检索内容等不可信数据与系统指令明确隔离。规则过滤只能挡住一部分已知攻击,不能单独承担安全保证。
模型层隔离指令与不可信内容
模型层应明确指令优先级、允许的工具和数据边界,并把外部内容标记为数据而非指令。是否使用 XML、JSON 或其他结构取决于运行时的解析和校验能力,格式本身不能防住注入。
输出层校验高风险动作与敏感信息
输出和执行层要对敏感信息、工具参数与高风险动作做独立校验;拒绝信息不暴露具体检测规则。真正的权限边界应落在模型之外的鉴权、审批和沙箱中。
完成检查
为什么拒绝注入时不应说明检测细节: 暴露命中的规则会帮助攻击者针对性绕过。回复应保持中性,只说明请求无法执行及可接受的替代操作。
输入过滤就够了: 不够。输入过滤只能拦截明显的注入特征,攻击者仍可使用隐喻、角色扮演或结构符号绕过。需要结合模型侧的安全约束和输出侧检查,通过多层机制提高绕过成本。
System Prompt 里写“最高优先级”真的有效吗: 有帮助但不是绝对保证。明确优先级能让模型在多数情况下优先遵守安全规则,但面对复杂注入仍可能失效。它必须与其他防线配合,不能作为唯一安全手段。
来源与核验
- [owasp-llm-top-10] OWASP Top 10 for LLM Applications
核验日期:2026-08-31