WebMCP 工具安全性

Julia Pagnucco
Julia Pagnucco
Alexandra Klepper
Alexandra Klepper

發布日期:2026 年 6 月 9 日

您可以使用 Web Model Context Protocol (WebMCP) 建構結構化工具,並向在瀏覽器中執行的 AI 代理公開這些工具,包括擴充功能支援的代理。代理會使用大型語言模型 (LLM)、規則、記憶體和工具,代表使用者執行動作。

由於 LLM 會將所有文字、指令和使用者資料視為單一的權杖序列,因此容易受到間接提示詞注入攻擊,也就是攻擊者加入惡意指令。我們的團隊撰寫了這份工具安全文件,協助您保護網站和使用者免受不肖人士侵擾。

雖然部分模型設有可防範提示詞注入的層級,但無法保證大型語言模型 (LLM) 內部的安全性。模型本質上是機率模型,請務必記住,針對使用最先進 LLM 的代理式系統,已出現可重複的提示注入攻擊,且網路攻擊的盛行率正在增加。

為解決這些顧慮,我們針對使用 WebMCP 建構工具的開發人員,提供初步的安全性指南。

使用註解提示

建構工具時,請新增下列提示:

  • 視情況使用 untrustedContentHint。如果工具傳回使用者自製內容 (UGC) 或外部來源資料,請考慮將 untrustedContentHint 新增至工具。這個欄位會明確將酬載標示為不受信任,有助於保護網站完整性,同時向代理程式發出信號,表示這項資料需要加強審查。
  • 在不會變更狀態的工具上使用 readOnlyHint這樣一來,代理程式就能更妥善地決定何時要求使用者確認。

謹慎公開工具

WebMCP document.modelContext.registerTool API 只會向代理程式公開工具的功能。根據預設,其他網站或跨來源 iframe 無法觀察或與您的工具互動。

您可以使用 registerTool 中的「exposedTo」選項,為一系列特定的安全來源提供工具存取權。如果工具嵌入網站,或網站嵌入該來源,工具就會向這些來源公開。

// https://partner.org

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

請只對您信任的來源公開工具。如果工具會管理使用者資料或以其他方式影響使用者,這點就格外重要。

  • 唯讀工具 (例如 getFavoriteProducts) 可能會揭露使用者的資訊。您只應向會直接共用這類資料的網站公開這些工具。
  • 具備讀寫權限的工具會代表使用者採取行動。這些工具應只向您決定可信任的來源公開,以便代表使用者執行動作。舉例來說,您可能想向 postComment 公開 trustedExample.com,但不想向 evilExample.com 公開。

設定角色預算

為避免遇到代理程式防護措施,請簡潔地撰寫工具說明和輸出內容。為獲得最佳成效,建議使用以下字元限制:

  • 每則工具說明最多 500 個字元
  • 每個參數說明最多 150 個字元
  • 每個工具名稱和參數名稱最多 30 個字元
  • 每項工具輸出內容的字元限制為 1500 個

各個代理程式之間可能存在差異,建議您根據使用者意見調整字元預算。

後續步驟

我們將持續研究並建構代理程式網路的安全基礎架構。舉例來說,各方目前正在討論同意聲明管理,而規格草案包含 requestUserInteraction(),可在工具執行時非同步要求使用者輸入內容。

您打算如何在應用程式中導入 WebMCP?您是否還有其他疑慮 (包括安全性)?如果您註冊參加 WebMCP 來源試用,我們很想瞭解您的體驗:

如果您要建構代理程式,建議閱讀「WebMCP 的代理程式安全性考量事項」。