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

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

מגדיר אוסף של דפי אפליקציה או תוספים שיוצגו במקור ייחודי שמריצים בארגז החול (sandboxing), ואפשר גם להשתמש במדיניות Content Security Policy השימוש בהם. לפעילות בארגז חול יש שתי משמעויות:

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

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

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

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

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

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

ניתן לציין דף בארגז חול רק כשמשתמשים ב-manifest_version 2 ואילך.