A permissão ActiveTab

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 do navegador; 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.

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:na versão M72 e mais recentes, a permissão activeTab será concedida até que o usuário navegue até um origem diferente. Ou seja, 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.

Sem activeTab:

Sem ActiveTab

Com activeTab:

Com ActiveTab

Exemplo

Consulte a extensão de exemplo 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 corte da Web que tenha uma ação do navegador e um item de menu de contexto. Isso pode precisar acessar as guias apenas quando a ação do navegador 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 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.
  • Acesse o URL, o título e o favicon dessa guia usando uma API que retorna um objeto tabs.Tab. (essencialmente, activeTab concede a permissão tabs 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 activeTab: