發布日期: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 來源試用,我們很想瞭解您的體驗:
- 如要分享對 API 形式的意見,請在 GitHub 上的 WebMCP 說明文件中,對現有問題發表評論或開啟新問題。
- 如要對 Chrome 的實作方式提供意見,請回報 Chromium 錯誤。
- 加入搶先體驗計畫,提前瞭解新 API 並加入我們的郵寄清單。
- 在 Chrome 狀態中查看 Chrome 的實作情形。
如果您要建構代理程式,建議閱讀「WebMCP 的代理程式安全性考量事項」。