Manifesto - Recursos acessíveis na Web

Uma matriz de strings que especifica os caminhos dos recursos empacotados que podem ser usados na contexto de uma página da Web. Esses caminhos são relativos à raiz do pacote e podem conter caracteres curinga. Para exemplo, uma extensão que injeta um script de conteúdo com a intenção de criar algumas configurações interface para example.com permitiria todos os recursos exigidos pela interface (imagens, ícones, folhas de estilo, scripts etc.) da seguinte forma:

{
  ...
  "web_accessible_resources": [
    "images/*.png",
    "style/double-rainbow.css",
    "script/double-rainbow.js",
    "script/main.js",
    "templates/*"
  ],
  ...
}

Esses recursos ficam disponíveis em uma página da Web pelo URL chrome-extension://[PACKAGE ID]/[PATH], que pode ser gerado com extension.getURL . Os recursos da lista de permissões são disponibilizados com cabeçalhos CORS apropriados por mecanismos como o XHR.

A navegação de uma origem da Web para um recurso de extensão será bloqueada, a menos que o recurso seja listados como acessíveis pela web. Observe estes casos extremos:

  • Quando uma extensão usa as APIs webRequest ou declarativeWebRequest para redirecionar um usuário solicitação de recurso para um recurso que não pode ser acessado pela Web, essa solicitação também será bloqueada.
  • A instrução acima é verdadeira mesmo se o recurso que não estiver acessível na Web for de propriedade do redirecionamento .

Os scripts de conteúdo não precisam estar na lista de permissões.

Antes da versão 2 do manifesto, todos os recursos em uma extensão podiam ser acessados de qualquer página da da Web. Isso permitia que um site malicioso fizesse uma impressão digital das extensões instaladas pelo usuário ou explorar vulnerabilidades (por exemplo, bugs XSS) nas extensões instaladas. Limitando a disponibilidade somente de recursos que são explicitamente projetados para serem acessíveis pela Web minimizar a superfície de ataque disponível e proteger a privacidade dos usuários.

Disponibilidade padrão

Os recursos dentro de pacotes que usam o manifest_version 2 ou mais recente são bloqueados por padrão. e precisa estar na lista de permissões para uso com essa propriedade.

Os recursos dentro de pacotes que usam manifest_version 1 ficam disponíveis por padrão, mas se você fizer isso definir essa propriedade, ela será tratada como uma lista completa de todos os recursos permitidos. Recursos não listados serão bloqueados.