Манифест — Политика безопасности контента

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

Политика «страниц расширения» применяется к контекстам страниц и рабочих в расширении. Это будет включать всплывающее окно расширения, фоновый рабочий процесс и вкладки с HTML-страницами или iframe, которые были открыты расширением. Политика песочницы применяется ко всем страницам, указанным как страница песочницы в манифесте.

Политика по умолчанию

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

Эти значения по умолчанию эквивалентны указанию следующих политик в вашем манифесте:

{
  // ...
  "content_security_policy": {
    "extension_pages": "script-src 'self'; object-src 'self';",
    "sandbox": "sandbox allow-scripts allow-forms allow-popups allow-modals; script-src 'self' 'unsafe-inline' 'unsafe-eval'; child-src 'self';"
  }
  // ...
}

В этом случае расширение будет загружать локальные скрипты и объекты только из собственных упакованных ресурсов. WebAssembly будет отключен, и расширение не будет запускать встроенный Javascript или оценивать строки как исполняемый код. Если добавлена ​​страница песочницы, у нее будут более свободные разрешения для оценки сценариев за пределами расширения.

Минимальные и индивидуальные политики безопасности контента

Разработчики могут добавлять или удалять правила для своего расширения или использовать минимально необходимую политику безопасности контента в соответствии с потребностями своего проекта.

Политика в отношении страниц расширений

Chrome применяет минимальную политику безопасности контента для страниц расширений. Это эквивалентно указанию следующей политики в вашем манифесте:

{
  // ...
  "content_security_policy": {
    "extension_pages": "script-src 'self' 'wasm-unsafe-eval'; object-src 'self';"
  }
  // ...
}

Политика extension_pages не может быть смягчена сверх этого минимального значения. Другими словами, вы не можете добавлять в директивы другие источники сценариев, например, добавлять 'unsafe-eval' в script-src . Если вы добавите запрещенный источник в политику вашего расширения, Chrome во время установки выдаст подобную ошибку:

'content_security_policy.extension_pages': Insecure CSP value "'unsafe-eval'" in directive 'script-src'.

Политика в отношении страниц песочницы

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