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

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

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

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

לדוגמה, כך אפשר לציין ששני דפי תוספים יוצגו ב-Sandbox עם הסיומת 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" ואסור לכלול בה את האסימון allow-same-origin (מידע נוסף זמין בכתובת מפרט לאסימונים אפשריים של ארגז חול).

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

במאמר "שימוש ב-eval() בתוספים ל-Chrome" מפורט יותר פרטים על הטמעת הרצה בארגז חול (sandboxing) שמאפשרת להשתמש בספריות שאחרת היו נתקלים בבעיות בביצוע מדיניות ברירת המחדל של Content Security של התוסף.