Манифест — Песочница

Предупреждение. Начиная с версии 57, Chrome больше не разрешает внешний веб-контент (включая встроенные фреймы и скрипты) внутри изолированных страниц. Вместо этого используйте веб-просмотр .

Определяет коллекцию страниц приложений или расширений, которые должны обслуживаться в изолированном уникальном источнике, а также, при необходимости, политику безопасности контента для использования с ними. Пребывание в песочнице имеет два последствия:

  1. Страница в песочнице не будет иметь доступа к API расширений или приложений, а также прямого доступа к страницам, не изолированным в песочнице (она может взаимодействовать с ними через postMessage() ).
  2. На изолированную страницу не распространяется политика безопасности контента (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 ). Кроме того, указанный вами CSP может не разрешать загрузку внешнего веб-содержимого внутри изолированных страниц.

Обратите внимание, что вам нужно указать только те страницы, которые, как вы ожидаете, будут загружены в окнах или фреймах. Ресурсы, используемые изолированными страницами (например, таблицы стилей или исходные файлы JavaScript), не обязательно должны отображаться в списке sandboxed_page , они будут использовать песочницу страницы, на которой они внедрены.

«Использование eval в расширениях Chrome. Безопасно». более подробно рассказывается о реализации рабочего процесса песочницы, который позволяет использовать библиотеки, которые в противном случае имели бы проблемы с выполнением в соответствии с Политикой безопасности контента расширения по умолчанию .

Страница песочницы может быть указана только при использовании manifest_version 2 или выше.