Bảo mật công cụ WebMCP

Julia Pagnucco
Julia Pagnucco
Alexandra Klepper
Alexandra Klepper

Ngày xuất bản: 9 tháng 6 năm 2026

Bạn có thể sử dụng Giao thức ngữ cảnh mô hình web (WebMCP) để xây dựng và cung cấp các công cụ có cấu trúc cho các tác nhân AI chạy trong trình duyệt, bao gồm các tác nhân được hỗ trợ bởi tiện ích. Một tác nhân sử dụng mô hình ngôn ngữ lớn (LLM), quy tắc, bộ nhớ và công cụ để thực thi các hành động thay mặt người dùng.

Vì LLM xử lý tất cả văn bản, hướng dẫn và dữ liệu người dùng dưới dạng một chuỗi mã thông báo duy nhất, nên chúng dễ bị tiêm câu lệnh gián tiếp, tức là kẻ tấn công chèn các hướng dẫn độc hại. Nhóm của chúng tôi đã viết tài liệu này về tính bảo mật của công cụ để giúp bạn bảo vệ trang web và người dùng khỏi đối tượng xấu.

Mặc dù một số mô hình có các lớp giải quyết vấn đề chèn câu lệnh, nhưng không thể đảm bảo an toàn trong mô hình ngôn ngữ lớn (LLM). Các mô hình có bản chất xác suất. Bạn cần nhớ rằng đã có các cuộc tấn công lặp lại bằng cách chèn câu lệnh vào các hệ thống dựa trên tác nhân sử dụng LLM hiện đại nhất và số lượng cuộc tấn công trên web đang tăng lên.

Để giải quyết những lo ngại này, chúng tôi đã cung cấp hướng dẫn sơ bộ về tính bảo mật cho những người xây dựng công cụ bằng WebMCP.

Sử dụng gợi ý chú thích

Bạn nên thêm một số gợi ý khi xây dựng công cụ:

  • Sử dụng untrustedContentHint khi thích hợp. Nếu một công cụ trả về nội dung do người dùng tạo (UGC) hoặc dữ liệu có nguồn gốc bên ngoài, hãy cân nhắc thêm untrustedContentHint vào công cụ đó. Trường này gắn nhãn tải trọng một cách rõ ràng là không đáng tin cậy, để giúp bảo vệ tính toàn vẹn của trang web đồng thời cung cấp tín hiệu cho tác nhân rằng dữ liệu này cần được xem xét kỹ lưỡng hơn.
  • Sử dụng readOnlyHint trên các công cụ không thay đổi trạng thái. Điều này cho phép tác nhân đưa ra quyết định tốt hơn về thời điểm yêu cầu người dùng xác nhận.

Cung cấp công cụ một cách cẩn thận

API document.modelContext.registerTool WebMCP chỉ cung cấp chức năng của công cụ cho các tác nhân. Theo mặc định, các trang web khác hoặc iframe trên nhiều nguồn gốc không thể quan sát hoặc tương tác với công cụ của bạn.

Bạn có thể cấp quyền truy cập vào công cụ của mình bằng tuỳ chọn exposedTo trong registerTool cho một mảng các nguồn gốc cụ thể và an toàn. Điều này cung cấp công cụ của bạn cho những nguồn gốc đó khi được nhúng trên trang web của bạn và khi trang web của bạn được nhúng trên nguồn gốc đó.

// https://partner.org

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

Chỉ cung cấp công cụ của bạn cho những nguồn gốc mà bạn tin tưởng. Điều này đặc biệt quan trọng khi các công cụ quản lý dữ liệu người dùng hoặc ảnh hưởng đến người dùng.

  • Một công cụ chỉ đọc, chẳng hạn như getFavoriteProducts, có thể tiết lộ thông tin về người dùng. Bạn chỉ nên cung cấp những công cụ này cho các trang web mà bạn sẽ trực tiếp chia sẻ dữ liệu này.
  • Các công cụ có quyền đọc và ghi sẽ thực hiện hành động thay mặt người dùng. Bạn chỉ nên cung cấp những công cụ này cho các nguồn gốc mà bạn quyết định có thể tin cậy khi hành động thay mặt người dùng. Ví dụ: bạn có thể muốn tiết lộ postComment cho trustedExample.com, nhưng bạn không muốn tiết lộ cho evilExample.com.

Đặt ngân sách ký tự

Để tránh gặp phải các biện pháp bảo vệ tác nhân, hãy viết nội dung mô tả và đầu ra của công cụ một cách ngắn gọn. Bạn nên sử dụng các giới hạn ký tự sau để có kết quả tốt hơn:

  • 500 ký tự cho mỗi nội dung mô tả công cụ
  • 150 ký tự cho mỗi nội dung mô tả tham số
  • 30 ký tự cho mỗi tên công cụ và tên tham số
  • Giới hạn 1,5 nghìn ký tự cho mỗi đầu ra của công cụ

Có thể có một số điểm khác biệt giữa các tác nhân và bạn có thể muốn điều chỉnh ngân sách ký tự dựa trên ý kiến phản hồi của người dùng.

Các bước tiếp theo

Chúng tôi đang tiếp tục nghiên cứu và xây dựng cơ sở hạ tầng an toàn cho web dựa trên tác nhân. Ví dụ: hiện đang có cuộc thảo luận về việc quản lý sự đồng ý giữa các bên và bản nháp thông số kỹ thuật bao gồm requestUserInteraction() để yêu cầu hoạt động đầu vào của người dùng một cách không đồng bộ khi thực thi công cụ.

Bạn dự định triển khai WebMCP trong ứng dụng của mình như thế nào? Bạn có lo ngại nào khác về tính bảo mật hay không? Nếu bạn đăng ký dùng thử theo nguồn gốc WebMCP, chúng tôi muốn biết về trải nghiệm của bạn:

  • Chia sẻ ý kiến phản hồi của bạn về hình dạng API bằng cách bình luận về một vấn đề hiện có hoặc mở một vấn đề mới trong phần giải thích WebMCP trên GitHub.
  • Nếu bạn có ý kiến phản hồi về cách triển khai của Chrome, hãy gửi lỗi Chromium.
  • Tham gia chương trình xem trước sớm để xem trước các API mới và truy cập vào danh sách gửi thư của chúng tôi.
  • Xem lại cách triển khai cho Chrome trên Trạng thái Chrome.

Nếu bạn đang xây dựng một tác nhân, bạn nên đọc bài viết Các điểm cần cân nhắc về tính bảo mật của tác nhân đối với WebMCP.