發布日期:2026 年 6 月 9 日,上次更新日期:2026 年 9 月 1 日
| 說明影片 | 網頁 | 擴充功能 | Chrome 狀態 | 意圖 |
|---|---|---|---|---|
| GitHub | 總覽 | 實驗意圖 |
您可以使用 Web Model Context Protocol (WebMCP) 建構結構化工具,並向在瀏覽器中執行的 AI 代理公開這些工具,包括擴充功能支援的代理。代理程式會使用大型語言模型 (LLM)、規則、記憶體和工具,代表使用者執行動作。
由於 LLM 會將所有文字、指令和使用者資料視為單一的權杖序列,因此容易受到間接提示詞注入攻擊,也就是攻擊者加入惡意指令。我們的團隊撰寫了這份工具安全文件,協助您保護網站和使用者免受不肖人士侵擾。
雖然部分模型設有可防範提示詞注入的層級,但無法保證大型語言模型 (LLM) 內部的安全性。模型本質上是機率性的,請務必注意,針對使用最先進 LLM 的代理式系統,已出現可重複執行的提示注入攻擊,且網路攻擊的盛行率也日益增加。
為解決這些疑慮,我們針對使用 WebMCP 建構工具的開發人員,提供初步的安全性指引。
使用註解提示
建構工具時,請加入下列提示:
- 視情況使用
untrustedContentHint。如果工具傳回使用者自製內容 (UGC) 或外部來源資料,請考慮將untrustedContentHint新增至工具。這個欄位會明確將酬載標示為不受信任,有助於保護網站完整性,同時向代理程式發出信號,表示這項資料需要加強審查。 - 針對高風險或不可逆的動作,請使用
consequentialHint。如果執行工具會導致重大動作 (例如預訂行程或轉帳),請設定consequentialHint: true,讓代理程式或瀏覽器在執行前要求使用者確認。 - 在不會變更狀態的工具上使用
readOnlyHint。這有助於代理程式判斷何時要求使用者確認。
謹慎公開工具
WebMCP document.modelContext.registerTool API 只會向代理公開工具的功能。根據預設,其他網站或跨源 iframe 無法觀察或與您的工具互動。
您可以使用 registerTool 中的 exposedTo 選項,為一系列特定的安全來源提供工具存取權。當工具嵌入網站,以及網站嵌入該來源時,工具就會向這些來源公開。
// https://partner.org
await 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 個字元
- 每項工具的輸出內容字元數上限為 1,500 個
不同代理程式之間可能存在差異,建議您根據使用者意見回饋調整字元預算。
後續步驟
我們正持續研究並建構代理式網站的安全基礎架構。舉例來說,各方正在討論同意聲明管理,而規格草案包含 requestUserInteraction(),可在工具執行時非同步要求使用者輸入內容。
您打算如何在應用程式中導入 WebMCP?你是否還有其他疑慮,無論是安全性或其他方面?如果您註冊 WebMCP 來源試用,請與我們分享您的使用體驗:
- 如要分享對 API 形式的意見,請在現有問題中留言,或在 GitHub 上的 WebMCP 說明文件中開啟新問題。
- 如對 Chrome 的實作方式有任何意見,請回報 Chromium 錯誤。
- 加入搶先體驗計畫,提前瞭解新 API 並加入我們的郵寄清單。
- 請在「Chrome 狀態」中查看 Chrome 的實作方式。
如果您要建構代理程式,建議閱讀「WebMCP 的代理程式安全性考量」。