越狱(jailbreaking)和提示注入(prompt injection)是试图让 Claude 忽略其准则或您的指令的行为。虽然 Claude 本身对此类攻击具有较强的抵御能力,但本页面介绍的额外措施可以进一步加强您的防护机制,尤其是针对违反我们服务条款或使用政策的使用行为。
这些攻击根据威胁模型的不同分为两类:
在此威胁模型中,用户故意构造输入来操纵您的应用程序,使其生成您不希望的内容或执行您不希望的操作。以下缓解措施可加强您应用程序的防护机制:
无害性筛查: 使用 Claude Haiku 4.5 等轻量级模型在用户输入到达主对话之前对其进行预筛查。使用结构化输出将响应限制为简单的分类结果。
输入验证: 在用户输入到达 Claude 之前,过滤其中已知的注入模式。您可以通过提供已知的越狱语言作为示例,使用 LLM 创建通用的验证筛查器。
提示工程: 编写强调道德和法律边界的系统提示,并明确告知 Claude 如何拒绝请求。
应对屡次违规者: 对于反复尝试规避您应用程序防护机制的用户,调整响应方式并考虑对其进行限流或封禁。例如,如果某个特定用户多次触发同类拒绝(例如"输出被内容过滤策略阻止"),请告知该用户其行为违反了相关使用政策,并采取相应措施。
在此威胁模型中,您需要保护用户免受 Claude 代表他们读取的内容中嵌入的指令的影响:入站电子邮件的正文、抓取的网页、上传文件的 OCR 输出,或工具调用的结果。能够影响这些内容的攻击者可能会嵌入试图重定向 Claude 的指令。
请构建您的应用程序结构,使 Claude 能够可靠地区分不可信内容与您的指令:
仅将不可信内容放在工具结果中。 将第三方内容放在 tool_result 块中传递给 Claude,切勿放在 system 提示或普通的用户 text 块中。Claude 经过训练,会对出现在工具结果中的指令保持适当的怀疑态度。有关 tool_result 格式,请参阅处理工具调用。
告知 Claude 内容是什么以及来自何处。 在工具的 description 中,或在结果本身的结构中,明确说明内容的性质和来源:例如,这是来自未知发件人的入站电子邮件正文,或是从用户上传的图片中提取的 OCR 文本。这些上下文有助于 Claude 判断对嵌入指令的信任程度。
在系统提示中声明策略。 明确告知 Claude,从工具、文档或搜索返回的内容是不可信数据,绝不能覆盖系统提示或用户的原始请求。
对不可信内容进行 JSON 编码。 在可能的情况下,将第三方字符串包装在 JSON 对象中,而不是将其拼接到自由格式的文本中。JSON 转义在不可信的有效载荷与周围结构之间提供了明确的分隔符,因此攻击者无法通过闭合引号或标签来"逃逸"到指令上下文中。
不要将您自己的指令放在工具结果中。 由于 Claude 将工具结果内容视为不可信数据,您放在其中的指令可能会被忽略或被标记为潜在的注入。请在 tool_result 块之后的 user 轮次中发送您的指令。在 Claude Opus 4.8 及更高版本中,您也可以使用对话中途系统消息。
限制 Claude 对敏感数据和操作的访问。 应用最小权限原则,以便即使注入成功也只能造成最小的损害:不要向 Claude 提供它不需要的密钥,在沙箱环境中运行工具,并尽可能缩小权限范围。
在 Claude 对工具输出采取行动之前对其进行筛查。 将您用于用户输入的轻量级模型筛查模式同样应用于工具返回的内容。运行每个工具,将其原始输出传递给使用 Claude Haiku 4.5 的小型分类器调用,只有当筛查结果显示没有注入尝试时,才将内容作为 tool_result 块返回。使用结构化输出,使分类器的判定结果成为您的应用程序可以解析并据此分支处理的值。
您也可以将上一节中的输入验证模式应用于工具结果,然后再将其传递给 Claude。
对您自己的智能体进行红队测试。 在部署之前,使用故意包含注入尝试的文档、电子邮件和工具输出来测试您的工作流程,并确认 Claude 会忽略这些注入,同时您的筛查和确认步骤能够捕获其余情况。
定期分析输出,寻找注入成功的迹象。利用此监控来迭代优化您的提示、验证和过滤策略。
组合多种策略以实现稳健的保护。以下是一个结合工具使用的企业级示例:
通过分层应用这些策略,您可以构建针对越狱和提示注入的稳健防御,确保您基于 Claude 的应用程序保持最高的安全性和合规性标准。
Was this page helpful?