Proteja a privacidade do usuário

Os usuários não vão instalar uma extensão se ela comprometer a privacidade ou solicitar mais permissões de que precisam. As solicitações de permissão precisam fazer sentido para os usuários e ser limitadas a informações críticas necessárias para implementar a extensão. Extensões que coletam ou transmitem dados do usuário precisam obedecer às políticas em Proteger a privacidade do usuário.

Proteja e respeite os usuários da extensão incluindo essas precauções para manter a identidade segura.

Reduzir as permissões necessárias

As APIs que uma extensão pode acessar são especificadas no campo permissions do manifesto. Quanto mais permissões forem concedidas, mais caminhos um invasor terá para interceptar informações. Somente as APIs das quais uma extensão depende precisam ser listadas. É preciso considerar opções menos invasivas. Quanto menos permissões uma extensão solicita, menos avisos de permissão são exibidos ao usuário. É mais provável que os usuários instalem extensões com avisos limitados.

As extensões não podem solicitar permissões de acesso aos dados do usuário que não sejam necessárias no momento, mas que possam ser implementadas no futuro. Inclua novas permissões com atualizações de extensões e considere torná-las opcionais.

activeTab

As extensões que usam permissões de host para injetar scripts geralmente podem substituir activeTab. A permissão activeTab concede a uma extensão acesso temporário à guia ativa no momento, somente quando o usuário invocar a extensão. O acesso é interrompido quando o usuário sai ou fecha a guia atual. Ele serve como uma alternativa para muitos usos de <all_urls>.

{
  "name": "Very Secure Extension",
  "version": "1.0",
  "description": "Example of a Secure Extension",
  "permissions": ["activeTab"],
  "manifest_version": 3
}

A permissão "activeTab" não mostra mensagens de aviso durante a instalação.

Ativar permissões opcionais

Permita que os usuários escolham os recursos e as permissões necessários de uma extensão ao incluir permissões opcionais. Se um recurso não for essencial para a funcionalidade principal de uma extensão, torne-o opcional e mova a API ou o domínio para o campo optional_permissions.

{
  "name": "Very Secure Extension",
  ...
  "optional_permissions": [ "tabs", ],
  "optional_host_permissions": ["https://www.google.com/" ],
  ...
}

A inclusão de permissões opcionais permite que uma extensão explique por que precisa de uma permissão específica quando o usuário ativa o recurso relevante. A extensão pode oferecer ao usuário uma opção para ativar recursos.

Captura de tela de um pop-up solicitando a ativação de permissões

Clicar em OK! aciona o evento a seguir no service worker.

chrome.action.onClicked.addListener((event) => {
  // Permissions must be requested from inside a user gesture, like a button's
  // click handler.
  chrome.permissions.request(
    {
      permissions: ["tabs", "scripting"],
      origins: ['https://www.google.com/']
    },
    function (granted) {
      // The callback argument will be true if the user granted the permissions.
      if (granted) {
        // doSomething();
      } else {
        // doSomethingElse();
      }
    }
  );
});

O usuário receberá uma solicitação com a seguinte solicitação.

Captura de tela de uma solicitação de permissões opcionais.

Permissões opcionais também podem ser implementadas em uma atualização de extensão. Isso disponibilizará o novo recurso para os usuários sem desativar a extensão, como pode acontecer em caso de atualização com as novas permissões necessárias.

Limite e proteja as informações do usuário

Solicite apenas a quantidade mínima de dados necessária para uma extensão. Quanto menos informações uma extensão pede ao usuário, menos exposição é feita quando a extensão é comprometida.

Todos os dados de usuários solicitados devem ser tratados com cuidado. Armazene e recupere dados em um servidor seguro com um domínio registrado. Sempre use HTTPS para se conectar e evite manter dados confidenciais do usuário no lado do cliente de uma extensão, porque o armazenamento dela não é criptografado.

Salvando dados e modo de navegação anônima

As extensões podem salvar dados usando a API storage ou fazendo solicitações de servidor que resultam em salvar dados. Quando a extensão precisar salvar algo, primeiro considere se isso é de uma janela anônima. Por padrão, as extensões não são executadas em janelas anônimas.

O modo de navegação anônima promete que a janela não deixará rastros. Ao lidar com dados de janelas anônimas, as extensões precisam respeitar essa promessa. Se uma extensão normalmente salva o histórico de navegação, não salve o histórico de janelas anônimas. No entanto, as extensões podem armazenar preferências de configuração de qualquer janela, anônima ou não.

Para detectar se uma janela está no modo de navegação anônima, verifique a propriedade incognito do objeto tabs.Tab ou windows.Window relevante.

function saveTabData(tab) {
  if (tab.incognito) {
    return;
  } else {
    chrome.storage.local.set({data: tab.url});
  }
}