WebMCP 工具安全性

Julia Pagnucco
Julia Pagnucco
Alexandra Klepper
Alexandra Klepper

Published: June 9, 2026

您可以使用 Web 模型上下文协议 (WebMCP) 为在浏览器中运行的 AI 智能体(包括 由扩展程序提供支持的智能体)构建 和公开结构化工具。智能体使用大语言模型 (LLM)、规则、记忆和工具来代表用户执行操作。

由于 LLM 将所有文本、指令和用户数据视为单个 token 序列,因此它们容易受到攻击者插入 恶意指令的 间接提示注入 的影响。我们的团队编写了这篇关于工具安全性的文档,旨在帮助您保护网站和用户免受不良行为者的侵害。

虽然某些模型具有用于解决提示注入问题的层,但无法保证大语言模型 (LLM) 的安全性。模型本质上是概率性的。请务必记住,针对使用最先进 LLM 的智能体系统,已经发生了 可重复的提示注入攻击 ,并且针对 Web 的 攻击越来越普遍

为了解决这些问题,我们为使用 WebMCP 构建工具的人员提供了有关安全性的初步指南。

使用注释提示

构建工具时,您应添加一些提示:

  • 在适当的情况下使用 untrustedContentHint。如果工具返回用户生成的内容 (UGC) 或外部来源的数据,请考虑向该工具添加 untrustedContentHint。此字段会将载荷明确标记为不受信任,以帮助保护网站的完整性,同时向智能体发出信号,表明此数据需要加强审查。
  • 在不更改状态的工具上使用readOnlyHint这样,智能体就可以更好地决定何时请求用户确认。

谨慎公开您的工具

WebMCP document.modelContext.registerTool API 仅向智能体公开工具的功能。默认情况下,其他网站或跨源 iframe 无法观察或与您的工具互动。

您可以使用 exposedTo选项在 registerTool中向一组特定的安全来源提供对工具的访问权限。这样,当您的工具嵌入到您的网站中时,以及当您的网站嵌入到该来源中时,您的工具就会向这些来源公开。

// https://partner.org

document.modelContext.registerTool({
  name: 'my_shared_tool',
  description: 'Shared across origins',
  // ...
}, {
  exposedTo: ['https://trusted.com', 'https://example.com']
});

仅向您信任的 来源公开您的工具。当工具管理用户数据或以其他方式影响用户时,这一点尤为重要。

  • 只读工具(例如 getFavoriteProducts)可以透露有关用户的信息。您应仅向您会直接与之共享此数据的网站公开这些工具。
  • 具有读写权限的工具会代表用户执行操作。这些工具应仅向您决定在代表用户执行操作时可以信任的来源公开。例如,您可能希望向 trustedExample.com 公开 postComment,但不希望向 evilExample.com 公开。

设置字符预算

为避免遇到智能体防护措施,请编写简洁的工具说明和输出。我们建议您遵循以下字符数限制,以获得更好的结果:

  • 每个工具说明 500 个字符
  • 每个参数说明 150 个字符
  • 每个工具名称和参数名称 30 个字符
  • 每个工具输出 1500 个字符的限制

不同智能体之间可能存在一些差异,您可能需要根据用户反馈调整字符预算。

后续步骤

我们正在继续研究和构建智能体 Web 的安全基础架构。例如,我们正在讨论跨方的同意管理,并且规范草稿包含 requestUserInteraction() ,用于在工具执行时异步请求用户输入。

您打算如何在应用中实现 WebMCP?您是否有其他顾虑(安全性或其他方面)?如果您注册了 WebMCP 源试用,我们希望了解您的体验:

  • 在 GitHub 上的 WebMCP 说明中,通过评论现有问题或 打开新问题来分享您对 API 形状的反馈。
  • 如果您对 Chrome 的实现有反馈,请提交 Chromium bug
  • 加入早期预览计划 抢先了解新 API 并访问我们的邮件列表。
  • Chrome 状态中查看 Chrome 的实现。

如果您要构建智能体,建议您阅读 WebMCP 的智能体安全注意事项