Proteja a privacidade do usuário

Os usuários não instalarão uma extensão se ela comprometer a privacidade deles ou solicitar mais permissões que parecem necessárias. As solicitações de permissão precisam fazer sentido para os usuários e ser limitadas às informações essenciais necessárias para implementar a extensão. As extensões que coletam ou transmitem dados do usuário precisam obedecer às políticas definidas em Como 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 concedidas, mais formas um invasor terá para interceptar informações. Somente as APIs de que uma extensão depende devem ser listadas. Considere opções menos invasivas. Quanto menos permissões uma extensão solicitar, menos avisos de permissão serão mostrados ao usuário. É mais provável que os usuários instalem uma extensão com avisos limitados.

As extensões não podem ser prontas para o futuro acesso aos dados do usuário solicitando permissões que ele não precisa no momento, mas que pode implementar no futuro. Inclua novas permissões com atualizações de extensão 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 concederá 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 fecha ou sai da guia atual. Ele é uma alternativa para muitos usos do <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 exibe mensagens de aviso durante a instalação.

Ativar as permissões opcionais

Capacite os usuários a escolher de quais recursos e permissões precisam de uma extensão, incluindo 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 a opção de ativar atributos de machine learning.

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

Clicar em OK! acionará o seguinte evento 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á a seguinte solicitação:

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

Permissões opcionais também podem ser implementadas em uma atualização de extensão. Isso fará com que o novo está disponível para os usuários sem desativar a extensão, como pode acontecer ao atualizar para a as permissões necessárias.

Limitar e proteger as informações dos usuários

Solicite apenas a quantidade mínima de dados de que uma extensão precisa. Quanto menos informações uma extensão solicitar do usuário, menor será a exposição se a extensão estiver comprometida.

Todos os dados de usuário 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 cliente. de uma extensão, já que o armazenamento não é criptografado.

Como salvar dados e o modo de navegação anônima

As extensões podem salvar dados usando a API storage ou fazendo solicitações ao servidor que resulta na economia de dados. Quando a extensão precisar salvar algo, primeiro considere se é de um 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 devem cumprir essa promessa. Se uma extensão normalmente salva a navegação histórico, não salvam o histórico de janelas anônimas. No entanto, as extensões podem armazenar preferências em 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.

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