A permissão "activeTab"
concede à extensão acesso temporário à guia ativa no momento quando a o usuário invoca a extensão, por exemplo, clicando na ação; Acesso à guia dura enquanto o usuário está na página e é revogado quando o usuário sai da página ou fecha a guia. Por exemplo, se o usuário invocar a extensão em https://example.com e depois navegar para https://example.com/foo, a extensão continuará a ter acesso à página. Se o o usuário acessar https://chromium.org, o acesso será revogado.
Isso serve como uma alternativa para muitos usos do "<all_urls>"
, mas não mostra nenhuma mensagem de aviso. durante a instalação:
Sem "activeTab"
:
Com "activeTab"
:
Exemplo
Consulte a extensão de exemplo Page Redder:
manifest.json:
{ "name": "Page Redder", "version": "2.0", "permissions": [ "activeTab", "scripting" ], "background": { "service_worker": "service-worker.js" }, "action": { "default_title": "Make this page red" }, "manifest_version": 3 }
service-worker:
function reddenPage() { document.body.style.backgroundColor = 'red'; } chrome.action.onClicked.addListener((tab) => { if (!tab.url.includes('chrome://')) { chrome.scripting.executeScript({ target: { tabId: tab.id }, func: reddenPage }); } });
Motivação
Considere uma extensão de corte da Web que tenha uma ação e um item de menu de contexto. Isso pode precisar acessar as guias apenas quando a ação for clicada ou quando item do menu de contexto é executado.
Sem "activeTab"
, essa extensão precisaria solicitar acesso total e permanente a todos os sites, para que pudesse fazer seu trabalho caso fosse chamado pelo usuário. Isso é muito poder confiar a uma extensão tão simples. E, se a extensão for comprometida, o atacante tem acesso a tudo que a extensão tinha.
Por outro lado, uma extensão com a permissão "activeTab"
só obtém acesso a uma guia em resposta a um gesto explícito do usuário. Se a extensão for comprometida, o invasor terá que esperar pelo invoque a extensão antes de obter acesso. E esse acesso só dura até que a guia seja navegou ou está fechado.
O que "activeTab" permite que
Enquanto a permissão "activeTab"
estiver ativada para uma guia, uma extensão poderá:
- Chame
scripting.insertCSS()
ouscripting.executeScript()
nessa guia se a permissão"scripting"
também for declarada (como no exemplo acima). - Acesse o URL, o título e o favicon dessa guia usando uma API que retorna um objeto
tabs.Tab
. (essencialmente,"activeTab"
concede permissão do host temporariamente). - Interceptar solicitações de rede na guia para a origem do frame principal usando o método webRequest API. A extensão recebe temporariamente permissões de host para a origem do frame principal da guia.
Como invocar a guia ativa
Os gestos do usuário abaixo ativam a permissão "activeTab"
:
- Executar uma ação
- Executar um item do menu de contexto
- Executar um atalho de teclado usando a API Commands (em inglês)
- Aceitação de uma sugestão da API da omnibox