permissões
Tipo | Array |
---|---|
Obrigatório | Não |
Exemplo |
json
|
Use a chave permissions
para solicitar privilégios especiais para sua extensão. Esta chave é um array de strings, onde cada string é uma solicitação para uma permissão.
Se você solicitar permissões usando esta chave, o navegador poderá informar ao usuário que a extensão a ser instalada está solicitando certos privilégios, e perguntar se aceita ou não conceder esses privilégios. O navegador também poderá permitir que o usuário inspecione os privilégios de uma extensão depois que essa for instalada.
A chave pode conter três tipos de permissões:
- permissões de servidor (host)
- permissões de API
- a permissão activeTab (aba ativa)
Permissões de servidor (host)
Permissões de servidor são espscificadas como match patterns. Cada pattern identifica um grupo de URLs para os quais a extensão solicita privilégios adicionais. Por exemplo, uma permissão de servidor poderia ser "*://developer.mozilla.org/*"
.
Os privilégios adicionais incluem:
- acesso XMLHttpRequest e fetch para aquelas origens sem restrições cross-origin (mesmo para requisições feitas a partir de content scripts)
- habilidade de injetar scripts programaticamente (usando tabs.executeScript) em páginas servidas a partir daquelas origens
- habilidade de receber eventos a partir da API webRequest para aqueles servidores
- habilidade de acessar cookies daquele servidor usando a API cookies, caso a permissão de API "cookies" também esteja incluída.
- desconsiderar a proteção contra rastreamento se o servidor for um domínio completo sem asteriscos. Não funciona com
<all_urls>
.
No Firefox, da versão 56 em diante, extensões recebem automaticamente permissões de servidor para sua própria origem, que é na forma:
moz-extension://60a20a9b-1ad4-af49-9b6c-c64c98c37920/
onde 60a20a9b-1ad4-af49-9b6c-c64c98c37920
é o ID interno da extensão. A extensão pode obter essa URL programaticamente chamando extension.getURL():
browser.extension.getURL("");
// moz-extension://60a20a9b-1ad4-af49-9b6c-c64c98c37920/
Permissões de API
Permissões de API são especificadas como palavras-chave. Cada palavra-chave nomeia uma API WebExtension que a extensão gostaria de usar.
As seguintes palavras-chave estão atualmente disponíveis:
activeTab
alarms
background
bookmarks
browserSettings
browsingData
contentSettings
contextMenus
contextualIdentities
cookies
debugger
dns
downloads
downloads.open
find
geolocation
history
identity
idle
management
menus
nativeMessaging
notifications
pageCapture
pkcs11
privacy
proxy
search
sessions
storage
tabHide
tabs
theme
topSites
webNavigation
webRequest
webRequestBlocking
Na maioria dos casos, a permissão apenas concede acesso à API, com as seguintes exceções:
tabs
dá acesso a partes privilagiadas da APItabs
:Tab.url
,Tab.title
eTab.faviconUrl
. No Firefox, você também precisatabs
se quiser incluirurl
no parâmetroqueryInfo
paratabs.query()
. O resto ad APItabs
pode ser usado sem solicitar nenhuma permissão.webRequestBlocking
permite usar o argumento "blocking", assim você pode modificar e cancelar requisições.downloads.open
permite usar a APIdownloads.open()
.tabHide
permite usar a APItabs.hide()
.
Permissão activeTab (aba ativa)
Esta permissão é especificada como "activeTab"
. Se uma extensão tem a permissão activeTab
, quando o usuário interage com a extensão, a extensão recebe privilégios adicionais somente para a aba ativa.
"Interação do usuário" inclui:
- o usuário clica na ação da extensão, no navegador ou na página
- o usuário seleciona um item da extensão no menu de contexto
- o usuário ativa um atalho de teclado definido pela extensão
Os privilégios adicionais são:
- habilidade de injetar JavaScript ou CSS na aba programaticamente, usando
browser.tabs.executeScript
ebrowser.tabs.insertCSS
- acesso a essas partes privilegiadas da API tabs na aba atual:
Tab.url
,Tab.title
eTab.faviconUrl
.
A intenção desta permissão é permitir que extensões executem um caso de uso comum, sem ter que lhes dar permissões poderosas demais. Muitas extensões querem "fazer alguma coisa com a página atual quando o usuário pede". Por exemplo, considere uma extensão que queira executar um script na página atual quando o usuário clicar em uma ação do navegador. Se a permissão activeTab
não existisse, a extensão precisaria pedir a permissão de servidor <all_urls>
. Mas isso daria à extensão mais poder que o necessário: ela poderia executar scripts em qualquer aba e quando quisesse, em vez de apenas na aba atual e somente em resposta a uma ação do usuário.
Note que você só pode ter acesso à aba ou dado que estava ali, quando a interação do usuário ocorreu (por exemplo, um clique do mouse). Quando a aba ativa muda para outra página, por exemplo devido a concluir o carregamento ou algum outro evento, a permissão não lhe concede mais acesso à aba.
Normalmente, a aba a qual foi concedido activeTab
é somente a aba ativa atual, exceto em um caso. A API menus
permite a uma extensão criar um item de menu que é exibido se o usuário abrir o menu de contexto sobre uma aba (ou seja, no elemento na lista de abas que permite ao usuário mudar de uma aba para outra). Se o usuário clicar em um item desses, a permissão activeTab
é concedida para a aba em que o usuário clicou, mesmo que essa não seja a aba ativa no momento (de acordo com Firefox 63, Erro do Firefox 1446956).
Acesso à área de transferência
Existem duas permissões que permitem à extensão interagir com a área de transferência:
clipboardWrite
: escrever para a área de transferência usandodocument.execCommand("copy")
oudocument.execCommand("cut")
clipboardRead
: ler da área de transferência usandodocument.execCommand("paste")
Consulte Interação com a área de transferência para saber todos os detalhes sobre isso.
Armazenamento ilimitado
A permissão unlimitedStorage
:
- permite que extensões exceder qualquer quota imposta pela API
storage.local
- no Firefox, permite que extensões criem um banco de dados IndexedDB "persistente", sem que o navegador peça ao usuário permissão no momento em que o banco de dados é criado.
Exemplos
"permissions": ["*://developer.mozilla.org/*"]
Solicita acesso privilegiado a páginas sob developer.mozilla.org.
"permissions": ["tabs"]
Solicita acesso a partes privilegiadas da API tabs
.
"permissions": ["*://developer.mozilla.org/*", "tabs"]
Solicita ambas as permissões anteriores.
Compatibilidade com navegadores
BCD tables only load in the browser