Para usar a maioria das APIs de extensão e dos recursos, é necessário declarar a intent da sua extensão nos campos de permissões do manifesto. As extensões podem solicitar as seguintes categorias de permissões, especificadas usando as respectivas chaves de manifesto:
"permissions"
- Contém itens de uma lista de strings conhecidas. As mudanças podem acionar um aviso.
"optional_permissions"
- Concedido pelo usuário no momento da execução, e não no momento da instalação.
"content_scripts.matches"
- Contém um ou mais padrões de correspondência que permitem que scripts de conteúdo injetem em um ou mais hosts. As mudanças podem acionar um aviso.
"host_permissions"
- Contém um ou mais padrões de correspondência que dão acesso a um ou mais hosts. As mudanças podem acionar um aviso.
"optional_host_permissions"
- Concedido pelo usuário no momento da execução, e não no momento da instalação.
As permissões ajudam a limitar os danos caso sua extensão seja comprometida por malware. Alguns avisos de permissão são exibidos aos usuários antes da instalação ou durante a execução, conforme detalhado em Permissão com avisos.
Considere usar permissões opcionais sempre que a funcionalidade da extensão permitir, para fornecer aos usuários controle informado sobre o acesso a recursos e dados.
Se uma API exige uma permissão, a documentação explica como declará-la. Veja um exemplo em API Storage.
Manifesto
Este é um exemplo da seção de permissões de um arquivo de manifesto:
manifest.json:
{
"name": "Permissions Extension",
...
"permissions": [
"activeTab",
"contextMenus",
"storage"
],
"optional_permissions": [
"topSites",
],
"host_permissions": [
"https://www.developer.chrome.com/*"
],
"optional_host_permissions":[
"https://*/*",
"http://*/*"
],
...
"manifest_version": 3
}
Permissões do host
As permissões de host permitem que as extensões interajam com os padrões correspondentes do URL. Algumas APIs do Chrome exigem permissões de host, além das próprias permissões de API, que estão documentadas em cada página de referência. Confira alguns exemplos:
- Faça solicitações
fetch()
do service worker e das páginas de extensão. - Leia e consulte as propriedades da guia confidenciais (URL, título e favIconUrl) usando a API
chrome.tabs
. - Injetar um script de conteúdo de forma programática.
- Monitore e controle as solicitações de rede com a API
chrome.webRequest
. - Acesse cookies com a API
chrome.cookies
. - Redirecione e modifique solicitações e cabeçalhos de resposta usando a API
chrome.declarativeNetRequest
.
Permissões com avisos
Quando uma extensão solicita várias permissões e muitas delas exibem avisos na instalação, o usuário verá uma lista de avisos, como no exemplo a seguir:
Os usuários são mais propensos a confiar em uma extensão com avisos limitados ou quando as permissões são explicadas para eles. Considere implementar permissões opcionais ou uma API menos eficiente para evitar avisos Alarmes. Consulte as práticas recomendadas para avisos em Diretrizes de avisos de permissão. Os avisos específicos são listados com as permissões a que se aplicam na lista de referência Permissões.
Adicionar ou mudar padrões de correspondência nos campos "host_permissions"
e "content_scripts.matches"
do arquivo de manifesto também aciona um aviso. Para saber mais, consulte
Como atualizar permissões.
Permitir acesso
Se sua extensão precisar ser executada em URLs do file://
ou no modo de navegação anônima, os usuários precisarão conceder acesso à extensão na página de detalhes. Encontre instruções para abrir a página de detalhes em Gerenciar suas extensões.
Permitir acesso a URLs de arquivos e páginas anônimas
- Clique com o botão direito do mouse no ícone da extensão no Chrome.
Selecione Gerenciar extensão.
Role para baixo para ativar o acesso aos URLs dos arquivos ou ao modo de navegação anônima.
Para detectar se o usuário permitiu o acesso, chame extension.isAllowedIncognitoAccess()
ou
extension.isAllowedFileSchemeAccess()
.