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

Предупреждение. Начиная с версии 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 или выше.