אבטחה של כלי WebMCP

Julia Pagnucco
Julia Pagnucco
Alexandra Klepper
Alexandra Klepper

פורסם: 9 ביוני 2026, עדכון אחרון: 1 בספטמבר 2026

סרטון הסבר פיתוח אתרים תוספים סטטוס של Chrome הרציונל
GitHub גרסת מקור לניסיון גרסת מקור לניסיון תצוגה הבעת כוונות לניסוי

אתם יכולים להשתמש ב-Web Model Context Protocol‏ (WebMCP) כדי ליצור כלים מובנים ולחשוף אותם לסוכני AI שפועלים בדפדפן, כולל סוכנים שמבוססים על תוספים. סוכן משתמש במודל שפה גדול (LLM), בכללים, בזיכרון ובכלים כדי לבצע פעולות בשם המשתמש.

מודלי שפה גדולים מתייחסים לכל הטקסט, ההוראות ונתוני המשתמש כרצף יחיד של טוקנים, ולכן הם פגיעים להחדרת פרומפטים עקיפה – הכללה של הוראות זדוניות על ידי תוקף. הצוות שלנו כתב את המסמך הזה בנושא אבטחת כלים, כדי לעזור לכם להגן על האתר ועל המשתמשים מפני גורמים זדוניים.

יש מודלים עם שכבות שנועדו לטפל בהחדרת פרומפטים, אבל אי אפשר להבטיח בטיחות בתוך מודל שפה גדול (LLM). המודלים הם הסתברותיים במהותם. חשוב לזכור שהיו מתקפות חוזרות של החדרת פרומפטים נגד מערכות סוכנייות שמשתמשות במודלים גדולים של שפה (LLM) מתקדמים, ושכיחות המתקפות באינטרנט הולכת וגדלה.

כדי לטפל בחששות האלה, סיפקנו הנחיות ראשוניות בנושא אבטחה למי שמפתח כלים באמצעות WebMCP.

שימוש ברמזים להערות

יש כמה רמזים שכדאי להוסיף כשיוצרים כלים:

  • משתמשים במאפיין untrustedContentHint במקומות המתאימים. אם כלי מחזיר תוכן שנוצר על ידי משתמשים (UGC) או נתונים ממקור חיצוני, כדאי להוסיף את untrustedContentHint לכלי. השדה הזה מסמן במפורש את מטען הנתונים כלא מהימן, כדי לעזור להגן על תקינות האתר שלכם, וגם מספק לסוכן אות לכך שהנתונים האלה דורשים בדיקה מדוקדקת יותר.
  • מומלץ להשתמש ב-consequentialHint לפעולות חשובות או לפעולות שלא ניתן לבטל. אם הפעלת כלי מובילה לפעולות משמעותיות, כמו הזמנת נסיעה או העברת כספים, צריך להגדיר את consequentialHint: true כדי שהסוכן או הדפדפן יוכלו לבקש אישור מהמשתמש לפני ההפעלה.
  • משתמשים ב-readOnlyHint בכלים שלא משנים את המצב. כך הסוכן יכול לקבל החלטות טובות יותר לגבי המקרים שבהם כדאי לבקש אישור מהמשתמש.

חשיפה של הכלים שלכם

‫WebMCP document.modelContext.registerTool API חושף רק את הפונקציונליות של הכלי לסוכנים. כברירת מחדל, אתרים אחרים או מסגרות iframe חוצות מקור לא יכולים לצפות בכלים שלכם או ליצור איתם אינטראקציה.

אתם יכולים לספק גישה לכלי שלכם באמצעות האפשרות exposedTo ב-registerTool למערך של מקורות ספציפיים ומאובטחים. כך הכלי שלכם נחשף למקורות האלה כשהוא מוטמע באתר שלכם, וכשהאתר שלכם מוטמע במקור הזה.

// 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, נשמח לשמוע על החוויה שלכם:

אם אתם בונים סוכן, מומלץ לקרוא את המאמר שיקולי אבטחה של סוכנים ב-WebMCP.