Proteja a privacidade do usuário

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

Proteja e respeite os usuários da extensão incluindo estas precauções para manter a identidade deles segura. Quanto menos dados uma extensão pode acessar, menor é a chance de vazamento acidental.

Reduzir as permissões necessárias

As APIs que uma extensão pode acessar são especificadas no campo de permissões do manifesto. Quanto mais permissões forem concedidas, mais maneiras um invasor terá de interceptar informações. Apenas as APIs de que uma extensão depende devem ser listadas, e é preciso considerar opções menos invasivas. Quanto menos permissões uma extensão solicitar, menos avisos de permissão serão mostrados a um usuário. Os usuários têm mais chances de instalar uma extensão com poucos avisos.

As extensões não devem "preparar para o futuro" o acesso aos dados do usuário solicitando permissões que não precisam no momento, mas que podem 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 concede à extensão acesso temporário à guia ativa no momento, somente quando o usuário invoca a extensão. O acesso é interrompido quando o usuário sai ou fecha a guia atual. Ele serve como alternativa para muitos usos de <all_urls>.

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

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 de que precisam em 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", "https://www.google.com/" ],
  ...
}

Incluir permissões opcionais permite que uma extensão explique por que ela 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 recursos.

Captura de tela de um pop-up pedindo para ativar as permissões

Ao clicar em OK!, o evento a seguir será acionado no script em segundo plano.

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

Em seguida, o usuário vai receber a seguinte solicitação.

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

As permissões opcionais também podem ser implementadas em uma atualização de extensão. Assim, o novo recurso fica disponível para os usuários sem desativar a extensão, o que pode acontecer se a atualização for feita com novas permissões obrigatórias.

Limitar e proteger as informações do usuário

Solicite apenas o mínimo de dados do usuário que uma extensão precisa. Quanto menos informações uma extensão pedir de um usuário, menor será a exposição se ela for comprometida.

Todos os dados do usuário solicitados precisam 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 do usuário sensíveis no lado do cliente de uma extensão, já que o armazenamento de extensões não é criptografado.