A permissão ActiveTab

A permissão activeTab concede à extensão acesso temporário à guia ativa no momento quando o usuário invoca a extensão, por exemplo, clicando na ação do navegador. O acesso à guia dura enquanto o usuário está nessa página e é revogado quando ele sai ou fecha a guia.

Isso serve como uma alternativa para muitos usos do <all_urls>, mas não mostra nenhuma mensagem de aviso durante a instalação:

Observação:da versão M72 em diante, a permissão activeTab será concedida até que o usuário navegue para uma origem diferente. Ou seja, se o usuário invocar a extensão em https://example.com e navegar para https://example.com/foo, a extensão continuará tendo acesso à página. Se o usuário acessar https://chromium.org, o acesso será revogado.

Sem activeTab:

Sem ActiveTab

Com activeTab:

Com ActiveTab

Exemplo

Veja a extensão de exemplo do Page Redder:

{
  "name": "Page Redder",
  "version": "2.0",
  "permissions": [
    "activeTab"
  ],
  "background": {
    "scripts": ["background.js"],
    "persistent": false
  },
  "browser_action": {
    "default_title": "Make this page red"
  },
  "manifest_version": 2
}
// Called when the user clicks on the browser action.
chrome.browserAction.onClicked.addListener(function(tab) {
  // No tabs or host permissions needed!
  console.log('Turning ' + tab.url + ' red!');
  chrome.tabs.executeScript({
    code: 'document.body.style.backgroundColor="red"'
  });
});

Motivação

Considere uma extensão de recorte da Web que tenha uma ação do navegador e um item de menu de contexto. Essa extensão só precisa acessar as guias quando alguém clica na ação do navegador ou quando o item do menu de contexto é executado.

Sem activeTab, essa extensão precisaria solicitar acesso total e persistente a todos os sites, para que pudesse fazer o trabalho se fosse chamada pelo usuário. É muito difícil confiar em uma extensão tão simples. E se a extensão for comprometida, o invasor terá acesso a tudo o que a extensão tinha.

Por outro lado, uma extensão com a permissão activeTab só recebe acesso a uma guia em resposta a um gesto explícito do usuário. Se a extensão for comprometida, o invasor vai precisar esperar o usuário invocar a extensão antes de ter acesso. E esse acesso só dura até que a guia seja navegada ou fechada.

O que o ActiveTab permite

Enquanto a permissão activeTab estiver ativada para uma guia, uma extensão poderá:

  • Chame tabs.executeScript ou tabs.insertCSS nessa guia.
  • Consiga o URL, o título e o favicon dessa guia por uma API que retorna um objeto tabs.Tab. essencialmente, activeTab concede a permissão tabs temporariamente.
  • Intercepte solicitações de rede na guia para a origem do frame principal dela usando a API webRequest. A extensão recebe temporariamente permissões de host para a origem do frame principal da guia.

Como invocar o ActiveTab

Os seguintes gestos do usuário ativam o activeTab: