Declarar permissões e avisar os usuários

A capacidade de uma extensão de acessar sites e a maioria das APIs do Chrome é determinada pelas permissões. As permissões precisam ser restritas apenas ao que é necessário para a funcionalidade. A limitação de permissões estabelece os recursos de uma extensão e reduz a possível invasão aos dados se a extensão for comprometida por um atacante. Implemente para proteger as extensões e os usuários explícitas, mínimas e opcionais.

Organizar permissões

As permissões são strings conhecidas que se referem a uma API do Chrome ou padrões de correspondência que concedem acesso a um ou mais hosts. São listadas no manifesto e especificadas como permissões necessárias ou permissões opcionais.

{
  "name": "Permissions Extension",
  ...
  // required permissions
  "permissions": [
    "activeTab",
    "contextMenus",
    "storage"
  ],
  // optional permissions
  "optional_permissions": [
    "topSites",
    "http://www.developer.chrome.com/*"
  ],
      ...
  "manifest_version": 2
}

Limite as permissões necessárias apenas ao necessário para a funcionalidade principal da extensão. Um não pode solicitar mais permissões do que o necessário. não se prepare para o futuro solicitando permissões que podem ser necessárias com atualizações.

As permissões necessárias para recursos opcionais devem ser registradas como permissões opcionais. Isso permite que os usuários decidam quanto acesso eles estão dispostos a fornecer uma extensão e quais recursos de acordo com a necessidade.

Identificar as permissões necessárias

Uma extensão simples pode precisar solicitar várias permissões, e muitas permissões serão exibidas warnings na instalação. É mais provável que os usuários confiem em uma extensão com avisos limitados ou quando as permissões são explicadas a eles.

Avisos de permissão da extensão na instalação

Identifique a funcionalidade principal de uma extensão e quais permissões são necessárias para ela. Considere tornando os recursos opcionais se exigirem permissões com avisos.

Acionar permissões opcionais com eventos

A funcionalidade principal da extensão de exemplo de permissões opcionais é modificar a página "Nova guia". Um deles é exibir o objetivo do dia do usuário. Este recurso exige apenas as permissões storage o que não inclui um aviso.

Botão "Extensão" que ativa recursos adicionais

A extensão tem um recurso adicional: mostrando os principais sites do usuário. Esse recurso exige a topSites, que tem um aviso.

Aviso de extensão da API topSites

Desenvolver recursos que dependem de permissões com avisos como opcionais e apresentar esses oferece aos usuários uma introdução à extensão de forma orgânica e sem riscos. Além disso, esta permite que os usuários personalizem ainda mais sua experiência com uma extensão e cria oportunidade para explicar os avisos.

Substituir a permissão ActiveTab

A permissão activeTab concede acesso temporário ao site em que o usuário está e autoriza o para usar a permissão "tabs" na guia atual. Ela substitui a necessidade "<all_urls>" em muitos casos e não exibe nenhum aviso na instalação.

Sem ActiveTab:

Interface de permissões sem guia ativa

Com ActiveTab:

Interface de permissões com &quot;activeTab&quot;

A permissão activeTab concede a uma extensão acesso temporário à guia ativa no momento quando a user invoca a extensão. Se a extensão for comprometida, o invasor terá que esperar para que o usuário invoque a extensão antes de obter acesso, e esse acesso duraria apenas até a guia é navegada ou fechada.

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.
  • 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.

Os gestos do usuário abaixo ativam activeTab:

Permissão de acesso

Se uma extensão precisar acessar URLs do file:// ou operar no modo de navegação anônima, os usuários terão que ativar o acesso a esses recursos na página de detalhes da extensão em chrome://extensions.

Permitir URLs de arquivos e o modo de navegação anônima na página de detalhes da extensão

Uma extensão pode detectar se está ativada no modo de navegação anônima chamando extension.isAllowedIncognitoAccess() ou pode ser executada em file:// URLs com extension.isAllowedFileSchemeAccess()

Noções básicas sobre permissões

Há avisos de permissão para descrever os recursos concedidos por uma API aos usuários da extensão, mas alguns desses avisos podem não ser óbvios a princípio. Por exemplo, adicionar o "tabs" resulta em um aviso aparentemente não relacionado: a extensão pode Ler o conteúdo da sua navegação atividade. Embora a API chrome.tabs possa ser usada apenas para abrir novas guias, ela também pode ser usada para ver o URL que está associado a cada guia recém-aberta usando seus objetos tabs.Tab.

Quando possível, implemente permissões opcionais ou uma API menos eficiente para evitar alarmes de alertas.

Como visualizar avisos

Nenhum aviso de permissão será exibido se uma extensão for carregada como um arquivo descompactado. Para ver um avisos de permissão da extensão, acesse chrome://extensions e verifique se o modo de desenvolvedor está ativado e clique em EMpacotar EXTENSÃO.

O modo de desenvolvedor está marcado, depois clique em &quot;Compactar extensão&quot;

Especifique o caminho para a pasta da extensão no campo Diretório raiz da extensão e clique no Botão Compactar extensão. Ignore o campo Private key para um pacote inicial.

Especifique o caminho da extensão e, em seguida, clique na extensão de pacote

O Chrome criará dois arquivos, um .crx e um .pem, que contêm o nome da extensão chave privada.

Arquivos de extensão empacotados

Não perca a chave privada. Mantenha o arquivo .pem em um local secreto e seguro. será necessário para atualizar a extensão.

Para instalar o arquivo .crx, solte-o na página "Gerenciamento" da extensão do Chrome.

Solte o arquivo para instalar

Depois de soltar o arquivo .crx, o navegador perguntará se a extensão pode ser adicionada e exibida. de alertas.

Aviso sobre a extensão Nova guia

Permissões com avisos

Observação: as tabelas de permissões são atualizadas na medida do possível e podem conter pequenas discrepâncias com os avisos atuais. Além disso, algumas permissões podem não exibir avisos quando pareadas com o outras permissões. Por exemplo, o aviso "tabs" não será exibido se a extensão também solicita "<all_urls>". Para verificar os avisos mais recentes mostrados para permissões de extensões, siga siga as etapas em Como visualizar avisos.

Permissão Descrição Aviso
  • "http://*/*"
  • "https://*/*"
  • "*://*/*"
  • "<all_urls>"
Concede à extensão acesso a todos os hosts. É possível evitar a declaração de permissões de host usando a permissão activeTab. Ler e mudar todos os seus dados nos sites que você visitar
"https://HostName.com/" Concede acesso à extensão para "https://HostName.com/". É possível evitar declarar permissões de host usando a permissão activeTab. Ler e alterar seus dados em HostName.com
"bookmarks" Concede à extensão acesso à API chrome.bookmarks. Ler e mudar favoritos
"clipboardRead" Obrigatório se a extensão usar document.execCommand('paste'). Ler dados copiados e colados
"clipboardWrite" Indica que a extensão usa document.execCommand('copy') ou document.execCommand('cut'). Modificar dados copiados e colados
"contentSettings" Concede à extensão acesso à API chrome.contentSettings. Mude as configurações que controlam o site o acesso a recursos como cookies, JavaScript, plug-ins geolocalização, microfone, câmera etc.
"debugger" Concede à extensão acesso à API chrome.debugger.
  • Acessar o back-end do depurador de página
  • Ler e mudar todos os seus dados nos sites que você visitar
"declarativeNetRequest" Concede à extensão acesso à API chrome.declarativeNetRequest. Bloquear conteúdo da página
"desktopCapture" Concede à extensão acesso à API chrome.desktopCapture. Capturar conteúdo da tela
"downloads" Concede à extensão acesso à API chrome.downloads. Gerenciar seus downloads
"geolocation" Permite que a extensão use a API Geolocation do HTML5 sem solicitar permissão do usuário. Detectar sua localização física
"history" Concede à extensão acesso à API chrome.history. Ler e alterar seu histórico de navegação
"management" Concede à extensão acesso à API chrome.management. Gerenciar apps, extensões e temas
"nativeMessaging" Concede à extensão acesso à API de mensagens nativas. Comunicar-se com aplicativos nativos de colaboração
"notifications" Concede à extensão acesso à API chrome.notifications. Mostrar notificações
"pageCapture" Concede à extensão acesso à API chrome.pageCapture. Ler e mudar todos os seus dados nos sites que você visitar
"privacy" Concede à extensão acesso à API chrome.privacy. Mudar as configurações relacionadas à privacidade
"proxy" Concede à extensão acesso à API chrome.proxy. Ler e mudar todos os seus dados nos sites que você visitar
"system.storage" Concede à extensão acesso à API chrome.system.storage. Identificar e ejetar dispositivos de armazenamento
"tabCapture" Concede às extensões acesso à API chrome.tabCapture. Ler e mudar todos os seus dados nos sites que você visitar
"tabs" Concede à extensão acesso a campos privilegiados dos objetos Tab usados por várias APIs. incluindo chrome.tabs e chrome.windows. Em Em muitas circunstâncias, a extensão não precisará declarar a permissão "tabs" para fazer uso essas APIs. Ler seu histórico de navegação
"topSites" Concede à extensão acesso à API chrome.topSites. Ler uma lista dos sites visitados com mais frequência
"ttsEngine" Concede à extensão acesso à API chrome.ttsEngine. Ler todo o texto falado usando voz sintetizada
"webNavigation" Concede à extensão acesso à API chrome.webNavigation. Ler seu histórico de navegação

Atualizar permissões

Atualizar uma extensão com permissões adicionais pode desativá-la temporariamente. O usuário terá que reativá-la após concordar com os novos avisos.

Se o usuário atualizar manualmente uma extensão que agora inclui a permissão guias, ele vai receber um aviso na página de gerenciamento.

Permissão para adicionar guias

Se a extensão for atualizada automaticamente, será desativada até que o usuário concorde com a nova permissões.

A extensão foi desativada

Concordar com as permissões

Para evitar isso, torne o novo recurso opcional e adicione novas atualizações de permissão ao optional_permissions no manifesto.