מניפסט – ארגז חול

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

לשימוש בארגז חול יש שתי השלכות:

  1. לדף ש פועל בארגז חול לא תהיה גישה לממשקי API של תוספים ולא תהיה גישה ישירה לדפים שהם לא בארגז חול (יכול להיות שהוא יתקשר איתם באמצעות postMessage()).
  2. דף ששוכן בארגז חול לא כפוף למדיניות Content Security Policy (CSP) שבה משתמשים שאר התוסף (יש לו ערך CSP נפרד). כלומר, למשל, אפשר להשתמש בסקריפט מוטבע וב-eval().

לדוגמה, כך מציינים ששני דפי תוסף יוצגו בארגז חול עם CSP בהתאמה אישית:

{
  ...
  "content_security_policy": {
    "sandbox": "sandbox allow-scripts; script-src 'self' https://example.com"
  },
  "sandbox": {
    "pages": [
      "page1.html",
      "directory/page2.html"
    ]
  },
  ...
}

אם לא מציינים זאת, ערך ברירת המחדל של "content_security_policy" הוא sandbox allow-scripts allow-forms allow-popups allow-modals; script-src 'self' 'unsafe-inline' 'unsafe-eval'; child-src 'self';.

אפשר לציין את הערך של CSP כדי להגביל עוד יותר את ה-Sandbox, אבל הוא חייב לכלול את ההוראה "sandbox" ואסור שהוא יכלול את האסימון allow-same-origin (מידע נוסף זמין במפרט של HTML5 כדי לראות אסימונים אפשריים ל-Sandbox).

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

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