Manifesto - Recursos acessíveis na Web

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

{
  ...
  "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 o método extension.getURL. Os recursos da lista de permissões são disponibilizados com cabeçalhos CORS apropriados para que estejam disponíveis por mecanismos como o XHR.

A navegação de uma origem da Web para um recurso de extensão é bloqueada, a menos que o recurso esteja listado como acessível pela Web. Observe estes casos específicos:

  • Quando uma extensão usa as APIs webRequest ou declarativeWebRequest para redirecionar uma solicitação de recurso público para um recurso que não pode ser acessado pela Web, essa solicitação também é bloqueada.
  • Isso vale mesmo se o recurso não acessível pela Web pertencer à extensão de redirecionamento.

Os scripts de conteúdo não precisam ser incluídos 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 na Web. Isso permitiu que um site malicioso impressasse as extensões instaladas por um usuário ou explorasse vulnerabilidades (por exemplo, bugs XSS) nas extensões instaladas. Limitar a disponibilidade apenas a recursos que se destinam explicitamente a serem acessíveis pela Web serve para 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 manifest_version 2 ou mais recente são bloqueados por padrão e precisam estar na lista de permissões para uso por essa propriedade.

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