WebMCP aracının güvenliği

Julia Pagnucco
Julia Pagnucco
Alexandra Klepper
Alexandra Klepper

Yayınlanma tarihi: 9 Haziran 2026

Tarayıcıda çalışan yapay zeka aracılarına (uzantılarla desteklenen aracılar dahil) yapılandırılmış araçlar oluşturmak ve sunmak için Web Model Context Protocol'ü (WebMCP) kullanabilirsiniz. Aracı, kullanıcının adına işlemleri yürütmek için büyük dil modeli (LLM), kurallar, bellek ve araçlar kullanır.

LLM'ler tüm metinleri, talimatları ve kullanıcı verilerini tek bir parça dizisi olarak ele aldığından dolaylı istem enjeksiyonuna (saldırgan tarafından kötü amaçlı talimatların eklenmesi) karşı hassastır. Ekibimiz, web sitenizi ve kullanıcılarınızı kötü niyetli kişilerden korumanıza yardımcı olmak için bu belgeyi araç güvenliği hakkında yazdı.

Bazı modellerde istem enjeksiyonu saldırılarını ele alan katmanlar olsa da büyük dil modelinde (LLM) güvenliği garanti etmek mümkün değildir. Modeller doğası gereği olasılıksaldır. En yeni LLM'leri kullanan ajan tabanlı sistemlere karşı tekrarlanabilir istem enjeksiyonu saldırıları yapıldığını ve web'deki saldırıların yaygınlığının arttığını unutmamak önemlidir.

Bu endişeleri gidermek için WebMCP ile araç geliştirenler için güvenlik konusunda ön kılavuz hazırladık.

Ek açıklama ipuçlarını kullanma

Araçlarınızı oluştururken eklemeniz gereken birkaç ipucu vardır:

  • Uygun yerlerde untrustedContentHint kullanın. Bir araç, kullanıcı tarafından oluşturulan içerik (UGC) veya harici kaynaklı veriler döndürüyorsa araca untrustedContentHint eklemeyi düşünün. Bu alan, yükü açıkça güvenilmeyen olarak etiketler. Böylece, aracıyı bu verilerin daha fazla inceleme gerektirdiği konusunda bilgilendirirken sitenizin bütünlüğünün korunmasına yardımcı olur.
  • Durumu değiştirmeyen araçlarda readOnlyHint simgesini kullanın. Bu sayede, kullanıcı onaylarının ne zaman isteneceği konusunda daha iyi kararlar verilebilir.

Araçlarınızı dikkatli bir şekilde kullanıma sunun

WebMCP document.modelContext.registerTool API, yalnızca aracın işlevini temsilcilere sunar. Varsayılan olarak, diğer web siteleri veya kaynaklar arası iFrame'ler araçlarınızı gözlemleyemez ya da araçlarınızla etkileşimde bulunamaz.

registerTool bölümündeki exposedTo seçeneğiyle, belirli güvenli kaynaklara aracınıza erişim izni verebilirsiniz. Bu, aracınızı sitenize yerleştirildiğinde ve siteniz bu kaynağa yerleştirildiğinde bu kaynaklara maruz bırakır.

// https://partner.org

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

Araçlarınızı yalnızca güvendiğiniz kaynaklara açın. Bu durum, özellikle araçlar kullanıcı verilerini yönettiğinde veya kullanıcıyı başka bir şekilde etkilediğinde önemlidir.

  • getFavoriteProducts gibi salt okunur bir araç, kullanıcı hakkında bilgi ortaya çıkarabilir. Bu araçları yalnızca aksi takdirde bu verileri doğrudan paylaşacağınız web sitelerine göstermelisiniz.
  • Okuma ve yazma erişimi olan araçlar, kullanıcı adına işlem yapar. Bu araçlar yalnızca kullanıcınız adına işlem yaparken güvenilebileceğine karar verdiğiniz kaynaklara sunulmalıdır. Örneğin, postComment öğesini trustedExample.com için kullanıma sunmak isteyebilirsiniz ancak evilExample.com için kullanıma sunmak istemeyebilirsiniz.

Karakter bütçeleri belirleme

Ajan koruma sınırlarına takılmamak için kısa ve öz araç açıklamaları ve çıkışları yazın. Daha iyi sonuçlar için aşağıdaki karakter sınırlarını kullanmanızı öneririz:

  • Araç açıklaması başına 500 karakter
  • Parametre açıklaması başına 150 karakter
  • Araç adı ve parametre adı başına 30 karakter
  • Her bir araç çıkışı için 1.500 karakter sınırı

Ajanlar arasında farklılıklar olması muhtemeldir. Bu nedenle, karakter bütçelerinizi kullanıcı geri bildirimlerine göre ayarlayabilirsiniz.

Sonraki adımlar

Araştırma yapmaya ve etkileşimli web için güvenli bir altyapı oluşturmaya devam ediyoruz. Örneğin, taraflar arasında izin yönetimiyle ilgili devam eden bir tartışma var ve spesifikasyon taslağı, araç yürütülürken kullanıcı girişini eşzamansız olarak istemek için requestUserInteraction() içeriyor.

WebMCP'yi uygulamanızda nasıl uygulamayı planlıyorsunuz? Güvenlik veya başka konularda endişeleriniz var mı? WebMCP kaynak denemesine kaydolursanız deneyiminiz hakkında bilgi edinmek isteriz:

Aracı oluşturuyorsanız WebMCP için aracı güvenliğiyle ilgili dikkat edilmesi gereken noktalar başlıklı makaleyi okumanızı öneririz.