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

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

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

  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. Безопасно» более подробно описывается реализация процесса изоляции, позволяющего использовать библиотеки, которые в противном случае столкнулись бы с проблемами при выполнении в соответствии со стандартной политикой безопасности контента (Content Security Policy) расширения.

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