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

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

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

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

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

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

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

אפשר לציין דף ב-Sandbox רק כשמשתמשים ב-manifest_version בגרסה 2 ואילך.