
目录一、先戳破一个误区提示词加固为什么防不住二、纵深防御的四层框架第一层输入侧防御——先隔离再检测1. 结构隔离2. 分类器扫描3. 拦截或降级第二层模型侧防御——提升自身鲁棒性第三层执行侧防御——最硬的一道防线1. 最小权限原则2. 工具白名单3. 高风险人工确认4. 沙箱 读写分离第四层输出侧防御——过滤 可追溯三、面试回答框架一句话定调四、延伸思考纵深防御不是堆方案而是做取舍面试中如果被问到Agent 怎么防 Prompt 注入很多人的第一反应是在系统提示词里加限制不要听用户的忽略用户指令只能回答预设问题。但说实话这个回答一出口基本就已经露馅了。不是因为它错而是因为它把问题想得太简单也说明回答者没触及 Prompt 注入的本质。真正懂行的人会怎么答答案是四个字纵深防御。不是指望某一层防线百毒不侵而是用多层机制叠加抬高攻击成本、压缩单点突破后的破坏范围。这篇文章就把这套思路拆清楚。一、先戳破一个误区提示词加固为什么防不住要理解 Prompt 注入为什么难治得先看大模型是怎么处理输入的。系统指令、工具返回结果、用户消息——在模型眼里这些不是三种东西而是同一串 token。模型没有硬件级的边界去区分这是命令和这是数据它只是按概率一个词一个词往下接。01:00 核心判断模型分不清指令和数据所有输入最终都变成同一串 Token这意味着什么意味着只要攻击者能把一段恶意指令塞进上下文它就有可能被模型当成需要遵循的指令。你在 prompt 里写不要听用户的攻击者可以用更强的指令覆盖、用角色扮演绕过、用编码混淆伪装。你靠 prompt 去防 prompt 注入本质上就是用纸糊的墙挡子弹。01:30 攻击者可以通过更强指令、角色扮演、编码混淆绕过提示词限制正确思路是纵深防御二、纵深防御的四层框架既然单点防不住那就不要追求单点。工程上更成熟的思路是把风险分散到四个层面输入侧、模型侧、执行侧、输出侧。前两层降低被注入的概率执行侧守住底线输出侧保证出事之后能追溯。第一层输入侧防御——先隔离再检测输入侧的目标是在用户输入真正进入模型之前先完成清洗和标记。这里有三件事要做。1. 结构隔离不可信内容不要直接拼进 prompt和系统指令混在一起。把它放在结构化字段里用专门的标签包裹让模型明确知道这是数据不是命令。2. 分类器扫描在进入主模型之前先用一个独立的检测模型或规则引擎扫一遍。识别诱导性指令、越狱模板、异常模式。这个检测器不用太大但必须有相当于第一道安检门。3. 拦截或降级确认恶意的直接拒绝可疑的做降权标记后放行正常的顺利通过。三档处理比一刀切误杀率低也能兼顾安全和体验。02:30 输入侧防御核心结构隔离 分类器扫描 风险降级第二层模型侧防御——提升自身鲁棒性输入侧的防御本质上是概率性的再好的过滤器也做不到 100% 拦截。模型侧的作用是让模型本身更不容易上钩。第一个手段是对抗训练在微调阶段往训练数据里混入大量 Prompt 注入攻击样本全部标注为拒绝执行。让模型在权重层面就学会看到这种套路直接说不。第二个手段是指令优先级训练模型理解系统指令 工具返回数据 用户输入的层级关系。即使用户输入里带了命令语气模型也知道这段优先级低不能盲从。第三个手段是二次确认表达在敏感操作之前让模型先复述一遍我理解你要做的是某某操作确认吗这一步打断了攻击者一句话让模型直接执行的节奏。03:30 模型侧防御对抗训练、指令优先级、二次确认表达第三层执行侧防御——最硬的一道防线执行侧是整个纵深防御体系里最关键的一层。因为前面两层都是概率性的总会有高级攻击能绕过。但执行侧的权限控制是确定性的、是硬约束。想想看就算 LLM 被注入了把服务器上所有文件删掉如果这个 Agent 根本就没有 delete 工具的调用权限它能做什么什么都做不了。04:00 执行侧防御是最后也是最硬的防线核心是权限最小化执行侧有四条铁律1. 最小权限原则Agent 只拿完成当前任务必需的最小权限。不给管理员权限不给 root不给危险接口。能只读用户的绝不给写权限。2. 工具白名单Agent 能调什么工具、能传什么参数全部经过白名单校验。不是模型说调什么就调什么每一层调用都要检查。3. 高风险人工确认删除、支付、群发邮件、执行系统命令等操作必须弹出确认框。人类点了同意之后才能真正执行也就是 Human in the loop。4. 沙箱 读写分离敏感操作放在隔离沙箱里跑。读操作和写操作用不同凭证和通道写的流程更严格。第四层输出侧防御——过滤 可追溯最后一层面对的是万一前面都没防住的情况。这时要保证两件事敏感信息别漏出去出了事能查得到。输出内容过滤模型生成的内容在返回给用户之前再做一次扫描过滤可能夹带的密钥、内部 IP、个人隐私信息。全链路日志从用户输入、分类器判决、模型推理到每一次工具调用的详情和返回全流程留痕。每一环都形成审计链。安全事件的可追溯性有时候比预防本身更重要——你不可能防住所有攻击但你必须知道被攻击了、攻击者做了什么。异常可观测建立实时监控一旦出现异常高频的工具调用、异常的参数模式立刻告警。这样能在攻击进行中发现它而不是事后翻日志才后知后觉。05:00 输出侧防御内容过滤 全链路日志 异常可观测三、面试回答框架一句话定调回到面试场景。如果面试官问Agent 怎么防 Prompt 注入可以按这个框架答Prompt 注入的本质是大模型无法从架构上区分指令和数据——系统指令和用户输入在模型里都是 token没有天然边界。所以单靠 prompt 加限制词是治标不治本。正确做法是纵深防御的四层体系输入侧做结构化隔离和分类检测模型侧做对抗训练提升鲁棒性执行侧用最小权限、白名单和人工确认做硬约束输出侧做内容过滤和全链路审计。前两层降低概率执行侧守住底线输出侧保证可追溯。这段话的核心是先说根因再给框架最后分层落地。面试官听完就知道你不只是背过概念而是知道业务里怎么实现。四、延伸思考纵深防御不是堆方案而是做取舍纵深防御听起来很全但落到工程里并不是把每一层都做得最重。真正的问题是在业务场景下哪一层可以薄一点哪一层必须厚一点比如一个只读问答型 Agent执行侧可能只需要限制工具调用范围但如果是一个能操作数据库、能发邮件、能调用支付接口的 Agent执行侧的人工确认和权限控制就必须拉满。再比如 toC 场景对误杀率极度敏感输入侧的拦截策略就要更精细toB 内部工具则可以更激进。另一个常被忽略的问题是多层防御之间会不会互相冲突输入侧拦截太严模型侧学到的对抗样本可能不够用模型侧二次确认太多又会伤害用户体验。所以这四层不是独立工作的四道闸而是需要统一设计和调优的整体。Prompt 注入短期内不会被彻底消灭。它不是某个具体漏洞而是大模型把一切都当成 token 来接这一根本特性带来的系统性风险。接受这一点才能建立合理的安全预期不是追求零注入而是追求注入之后做不了破坏、做了也能被发现。纵深防御听起来很理想但在真实落地时每一层都伴随着成本与体验的权衡。输入侧扫描会增加延迟模型侧对抗训练需要持续收集攻击样本执行侧的人工确认会打断自动化流程输出侧全链路日志则带来存储和合规成本。一个值得关注的趋势是随着模型能力的增强未来可能出现原生更安全的架构设计例如把系统指令和用户输入在 attention 层面做隔离、引入不可变的系统级 memory、使用受限的执行环境等。但在这些方案成熟之前纵深防御仍然是 Agent 安全最务实的落地路径。