Keamanan alat WebMCP

Julia Pagnucco
Julia Pagnucco
Alexandra Klepper
Alexandra Klepper

Dipublikasikan: 9 Juni 2026

Anda dapat menggunakan Web Model Context Protocol (WebMCP) untuk membuat dan mengekspos alat terstruktur ke agen AI yang berjalan dalam browser, termasuk agen yang didukung oleh ekstensi. An agen menggunakan model bahasa besar (LLM), aturan, memori, dan alat untuk menjalankan tindakan atas nama pengguna.

Karena LLM memperlakukan semua teks, petunjuk, dan data pengguna sebagai satu urutan token, LLM rentan terhadap indirect prompt injection, yaitu penyertaan petunjuk berbahaya oleh penyerang. Tim kami telah menulis dokumen ini tentang keamanan alat, untuk membantu Anda melindungi situs dan pengguna dari pihak tidak bertanggung jawab.

Meskipun beberapa model memiliki lapisan yang menangani prompt injection, tidak mungkin menjamin keamanan di dalam model bahasa besar (LLM). Model bersifat probabilistik. Penting untuk diingat bahwa telah terjadi serangan prompt injection yang dapat diulang terhadap sistem agen yang menggunakan LLM canggih, dan prevalensi serangan di web semakin meningkat.

Untuk mengatasi masalah ini, kami telah memberikan panduan awal tentang keamanan bagi mereka yang membuat alat dengan WebMCP.

Menggunakan petunjuk anotasi

Ada beberapa petunjuk yang harus Anda tambahkan saat membuat alat:

  • Gunakan untrustedContentHint jika sesuai. Jika alat menampilkan konten buatan pengguna (UGC) atau data yang bersumber dari eksternal, pertimbangkan untuk menambahkan untrustedContentHint ke alat. Kolom ini secara eksplisit memberi label payload sebagai tidak tepercaya, untuk membantu melindungi integritas situs Anda sekaligus memberikan sinyal kepada agen bahwa data ini memerlukan pengawasan yang lebih ketat.
  • Gunakan readOnlyHint pada alat yang tidak mengubah status. Hal ini memungkinkan agen membuat keputusan yang lebih baik tentang kapan harus meminta konfirmasi pengguna.

Mengekspos alat dengan hati-hati

WebMCP document.modelContext.registerTool API hanya mengekspos fungsi alat ke agen. Secara default, situs lain atau iframe lintas asal tidak dapat mengamati atau berinteraksi dengan alat Anda.

Anda dapat memberikan akses ke alat Anda dengan opsi exposedTo di registerTool ke array asal tertentu yang aman. Hal ini akan mengekspos alat Anda ke asal tersebut saat disematkan di situs Anda, dan saat situs Anda disematkan di asal tersebut.

// https://partner.org

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

Hanya ekspos alat Anda ke asal yang Anda percayai. Hal ini sangat penting jika alat mengelola data pengguna atau memengaruhi pengguna.

  • Alat hanya baca, seperti getFavoriteProducts, dapat mengungkapkan informasi tentang pengguna. Anda hanya boleh mengekspos alat ini ke situs yang akan Anda gunakan untuk berbagi data ini secara langsung.
  • Alat dengan akses baca dan tulis mengambil tindakan atas nama pengguna. Alat ini hanya boleh diekspos ke asal yang Anda tentukan dapat dipercaya saat bertindak atas nama pengguna. Misalnya, Anda mungkin ingin mengekspos postComment ke trustedExample.com, tetapi Anda tidak ingin mengeksposnya ke evilExample.com.

Menetapkan anggaran karakter

Untuk menghindari pelanggaran batasan agen, tulis deskripsi dan output alat yang ringkas. Sebaiknya gunakan batas karakter berikut untuk mendapatkan hasil yang lebih baik:

  • 500 karakter per deskripsi alat
  • 150 karakter per deskripsi parameter
  • 30 karakter per nama alat dan nama parameter
  • Batas 1.500 karakter per output alat individual

Kemungkinan ada beberapa variasi di seluruh agen, dan Anda mungkin ingin menyesuaikan anggaran karakter dengan masukan pengguna.

Langkah berikutnya

Kami terus melakukan riset dan berupaya membangun infrastruktur yang aman untuk web agen. Misalnya, ada diskusi yang sedang berlangsung tentang pengelolaan izin di seluruh pihak, dan draf spesifikasi mencakup requestUserInteraction() untuk meminta input pengguna secara asinkron saat eksekusi alat.

Bagaimana Anda berencana menerapkan WebMCP di aplikasi Anda? Apakah Anda memiliki masalah lain, keamanan, atau lainnya? Jika Anda mendaftar ke uji coba origin WebMCP, kami ingin mengetahui pengalaman Anda:

Jika Anda membuat agen, sebaiknya baca Pertimbangan keamanan agen untuk WebMCP.