跳到主内容
快讯直播
AI智模界
AI 词典

占位符注入:模板里的空洞怎么被撑破

一句话定义:占位符注入(Placeholder Injection)是指应用把用户输入直接填进提示词模板的占位符(如 {{user_input}})时,没有对输入里的模板语法、引号或分隔符做转义,用户填进去的内容就能"闭合"原有结构、另起一段指令,让模型按他的意思而不是开发者的意思办事。

先看模板长什么样:

```

system: 你是订单客服,只回答物流问题。

user: {{user_input}}

```

正常情况下,用户填入"我的包裹到哪了",模板拼出来的就是一句普通提问。但如果输入里自带闭合符号和新的段落,拼接结果的结构就被改写了:原本属于"用户数据"的那段文字,从模型的视角看变成了新的指令行。模型并不理解"这是用户填的字段",它只看到一段连续文本,谁写得像指令,它就容易当指令执行。

打个生活化的比方:这很像 CSV 表格。某个格子留给用户填备注,用户却在内容里写了逗号或换行,一行数据被切成了好几列,后面所有字段整体错位。数据没有变坏,坏的是边界——内容越界成了结构。占位符注入就是提示词世界里的这次"错位"。

它和几个近邻概念容易混:

概念出问题的层次核心毛病
占位符注入应用拼字符串那一步结构边界被用户输入撑破
提示注入(AI 词典:Prompt Injection">Prompt Injection)模型读到的整段文本指令和数据混在一起、无法区分
越狱(Jailbreak)模型的安全对齐想办法绕过既有策略
SQL 注入(SQL Injection)数据库查询拼接同一个病根的老前辈

可以这样记:提示注入是"病症大类",占位符注入是其中一个很具体的"感染途径"——问题不在模型聪不聪明,而在你把门框尺寸交给了访客决定。反过来,即使没有占位符,纯聊天窗口一样可能有提示注入;即使占位符转义得干干净净,模型仍可能被自然语言说服。两者相关但不等同。

对从业者的实际意义,落到几条能马上做的事:别用字符串拼接去组装提示词,改用结构化的消息数组,让 system 与 user 在协议层面就分开;用户输入里出现的模板记号({{ }}、<% %>、三引号、Markdown 分隔线)要么剥离要么转义;给输入长度设上限;对模型输出做格式校验再往下游传。如果产品要做"让用户自定义提示词模板",那就等于把模板引擎开放给了外部,务必做白名单和沙箱,具体能力边界以所用框架的官方文档为准。

对普通职场人,意义更朴素:在表单里被要求"按格式填写"时别随手塞符号和换行;同时别把系统提示词当成保险箱——凡是用户能输入的地方,都可能被拿来改写规则。设计任何带填空位的流程时,先问一句:这个空,能不能被填成一段新规则?

AI 生成本文由 AI 基于公开信息自动生成,仅供参考。