防御 Prompt 注入:在不毁掉自己 Prompt 的前提下
- William Jacob
- 安全 , Prompt 注入
- 11 May, 2026
Prompt 注入是 LLM 应用的 SQL 注入,每个团队都用同一种方式学到这件事:用户在聊天里粘上 “ignore previous instructions”,demo 在台上崩了。直觉反应是在 system prompt 里加一句防御。这对最懒的攻击有效,对其他什么都没用。
为什么字符串匹配防御会失败
“ignore previous instructions” 的改写空间无限。翻译成另一种语言、用 base64 编码、嵌在被要求总结的文档里——任何防御性字符串匹配都有绕过方式。更糟的是,你的黑名单开始拒掉碰巧包含相同词的合法用户输入。
真正能减小爆炸半径的做法
把用户输入当作不可信跨架构边界处理,而不是在 prompt 层处理。不要给模型那种不需要它无法绕过的确认步骤就能采取破坏性行动的工具。在输入到达主模型之前,跑一个独立的小分类器筛掉明显的攻击模式。这些都不是滴水不漏的;目标是减小爆炸半径,不是消除威胁。把这件事做对的站点,会把工具表面设计成即使模型完全沦陷,也不能造成不可逆伤害。
Prompt 注入不是 prompt 工程问题。它是一个被装扮成 prompt 工程问题的权限边界问题。