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 que pareçam necessárias. 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. 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 essas precauções para manter a identidade segura. Lembre-se: quanto menos dados uma extensão pode acessar, menos dados ela pode vazar acidentalmente.

Reduzir as permissões necessárias

As APIs que uma extensão pode acessar estão especificadas no campo de permissões do manifesto. Quanto mais permissões concedidas, mais caminhos um invasor tem para interceptar informações. Somente as APIs das quais uma extensão depende precisam ser listadas, e é necessário 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 "preparar o acesso" aos dados do usuário solicitando permissões de que elas não precisam no momento, mas que podem implementar no futuro. Inclua novas permissões com atualizações de extensões e considere-as 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 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": 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 quais recursos e permissões eles 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", "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

Clique em OK! para acionar o evento a seguir no script de 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();
    }
  });
});

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 o mínimo de dados de usuário necessário para uma extensão. Quanto menos informações uma extensão pede ao usuário, menos exposição se a extensão for 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.