אבטחה של כלי 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.