1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
|
---
title: permissões
slug: Mozilla/Add-ons/WebExtensions/manifest.json/permissions
translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/permissions
original_slug: Mozilla/Add-ons/WebExtensions/manifest.json/permissões
---
<div>{{AddonSidebar}}</div>
<table class="fullwidth-table standard-table">
<tbody>
<tr>
<th scope="row" style="width: 30%;">Tipo</th>
<td><code>Array</code></td>
</tr>
<tr>
<th scope="row">Obrigatório</th>
<td>Não</td>
</tr>
<tr>
<th scope="row">Examplo</th>
<td>
<pre class="brush: json no-line-numbers">
"permissions": [
"*://developer.mozilla.org/*",
"webRequest"
]</pre>
</td>
</tr>
</tbody>
</table>
<p>Use a chave <code>permissions</code> para solicitar privilégios especiais para sua extensão. Esta chave é um array de strings, onde cada string é uma solicitação para uma permissão.</p>
<p>Se você solicitar permissões usando esta chave, o navegador poderá informar ao usuário que a extensão a ser instalada está solicitando certos privilégios, e perguntar se aceita ou não conceder esses privilégios. O navegador também poderá permitir que o usuário inspecione os privilégios de uma extensão depois que essa for instalada.</p>
<p>A chave pode conter três tipos de permissões:</p>
<ul>
<li>permissões de servidor (host)</li>
<li>permissões de API</li>
<li>a permissão activeTab (aba ativa)</li>
</ul>
<h2 id="Permissões_de_servidor_(host)">Permissões de servidor (host)</h2>
<p>Permissões de servidor são espscificadas como <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Match_patterns">match patterns</a>. Cada <em>pattern</em> identifica um grupo de URLs para os quais a extensão solicita privilégios adicionais. Por exemplo, uma permissão de servidor poderia ser <code>"*://developer.mozilla.org/*"</code>.</p>
<p>Os privilégios adicionais incluem:</p>
<ul>
<li>acesso <a href="/en-US/docs/Web/API/XMLHttpRequest">XMLHttpRequest</a> e <a href="/en-US/docs/Web/API/Fetch_API">fetch</a> para aquelas origens sem restrições <em>cross-origin</em> (mesmo para requisições feitas a partir de <em>content scripts</em>)</li>
<li>habilidade de injetar scripts programaticamente (usando <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/executeScript">tabs.executeScript</a>) em páginas servidas a partir daquelas origens</li>
<li>habilidade de receber eventos a partir da API <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webRequest">webRequest</a> para aqueles servidores</li>
<li>habilidade de acessar cookies daquele servidor usando a API <a href="/en-US/Add-ons/WebExtensions/API/cookies">cookies</a>, caso a permissão de API "cookies" também esteja incluída.</li>
<li>desconsiderar a proteção contra rastreamento se o servidor for um domínio completo sem asteriscos. Não funciona com <code><all_urls></code>.</li>
</ul>
<p>No Firefox, da versão 56 em diante, extensões recebem automaticamente permissões de servidor para sua própria origem, que é na forma:</p>
<pre><code>moz-extension://60a20a9b-1ad4-af49-9b6c-c64c98c37920/</code></pre>
<p>onde <code>60a20a9b-1ad4-af49-9b6c-c64c98c37920</code> é o ID interno da extensão. A extensão pode obter essa URL programaticamente chamando <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/extension/getURL">extension.getURL()</a>:</p>
<pre class="brush: js line-numbers language-js"><code class="language-js">browser<span class="punctuation token">.</span>extension<span class="punctuation token">.</span><span class="function token">getURL</span><span class="punctuation token">(</span><span class="string token">""</span><span class="punctuation token">);</span>
// moz-extension://60a20a9b-1ad4-af49-9b6c-c64c98c37920/</code></pre>
<h2 id="Permissões_de_API">Permissões de API</h2>
<p>Permissões de API são especificadas como palavras-chave. Cada palavra-chave nomeia uma API WebExtension que a extensão gostaria de usar.</p>
<p>As seguintes palavras-chave estão atualmente disponíveis:</p>
<ul>
<li><code>activeTab</code></li>
<li><code>alarms</code></li>
<li><code>background</code></li>
<li><code>bookmarks</code></li>
<li><code>browserSettings</code></li>
<li><code>browsingData</code></li>
<li><code>contentSettings</code></li>
<li><code>contextMenus</code></li>
<li><code>contextualIdentities</code></li>
<li><code>cookies</code></li>
<li><code>debugger</code></li>
<li><code>dns</code></li>
<li><code>downloads</code></li>
<li><code>downloads.open</code></li>
<li><code>find</code></li>
<li><code>geolocation</code></li>
<li><code>history</code></li>
<li><code>identity</code></li>
<li><code>idle</code></li>
<li><code>management</code></li>
<li><code>menus</code></li>
<li><code>nativeMessaging</code></li>
<li><code>notifications</code></li>
<li><code>pageCapture</code></li>
<li><code>pkcs11</code></li>
<li><code>privacy</code></li>
<li><code>proxy</code></li>
<li><code>search</code></li>
<li><code>sessions</code></li>
<li><code>storage</code></li>
<li><code>tabHide</code></li>
<li><code>tabs</code></li>
<li><code>theme</code></li>
<li><code>topSites</code></li>
<li><code>webNavigation</code></li>
<li><code>webRequest</code></li>
<li><code>webRequestBlocking</code></li>
</ul>
<p>Na maioria dos casos, a permissão apenas concede acesso à API, com as seguintes exceções:</p>
<ul>
<li> <code>tabs</code> dá acesso a <a href="/en-US/Add-ons/WebExtensions/API/tabs">partes privilagiadas da API <code>tabs</code></a>: <code>Tab.url</code>, <code>Tab.title</code> e <code>Tab.faviconUrl</code>. No Firefox, você também precisa <code>tabs</code> se quiser incluir <code>url</code> no parâmetro <code>queryInfo</code> para <code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/query">tabs.query()</a></code>. O resto ad API <code>tabs</code> pode ser usado sem solicitar nenhuma permissão.</li>
<li><code>webRequestBlocking</code> permite usar o argumento "blocking", assim você pode <a href="/en-US/Add-ons/WebExtensions/API/WebRequest">modificar e cancelar requisições</a>.</li>
<li><code>downloads.open</code> permite usar a API {{WebExtAPIRef("downloads.open()")}}.</li>
<li><code>tabHide</code> permite usar a API {{WebExtAPIRef("tabs.hide()")}}.</li>
</ul>
<h2 id="Permissão_activeTab_(aba_ativa)">Permissão activeTab (aba ativa)</h2>
<p>Esta permissão é especificada como <code>"activeTab"</code>. Se uma extensão tem a permissão <code>activeTab</code>, quando o usuário interage com a extensão, a extensão recebe privilégios adicionais somente para a aba ativa.</p>
<p>"Interação do usuário" inclui:</p>
<ul>
<li>o usuário clica na ação da extensão, no navegador ou na página</li>
<li>o usuário seleciona um item da extensão no menu de contexto</li>
<li>o usuário ativa um atalho de teclado definido pela extensão</li>
</ul>
<p>Os privilégios adicionais são:</p>
<ul>
<li>habilidade de injetar JavaScript ou CSS na aba programaticamente, usando <code><a href="/en-US/Add-ons/WebExtensions/API/tabs/executeScript">browser.tabs.executeScript</a></code> e <code><a href="/en-US/Add-ons/WebExtensions/API/tabs/insertCSS">browser.tabs.insertCSS</a></code></li>
<li>acesso a essas partes privilegiadas da API <em>tabs</em> na aba atual: <code>Tab.url</code>, <code>Tab.title</code> e <code>Tab.faviconUrl</code>.</li>
</ul>
<p>A intenção desta permissão é permitir que extensões executem um caso de uso comum, sem ter que lhes dar permissões poderosas demais. Muitas extensões querem "fazer alguma coisa com a página atual quando o usuário pede". Por exemplo, considere uma extensão que queira executar um script na página atual quando o usuário clicar em uma ação do navegador. Se a permissão <code>activeTab</code> não existisse, a extensão precisaria pedir a permissão de servidor <code><all_urls></code>. Mas isso daria à extensão mais poder que o necessário: ela poderia executar scripts em qualquer aba e quando quisesse, em vez de apenas na aba atual e somente em resposta a uma ação do usuário.</p>
<p>Note que você só pode ter acesso à aba ou dado que estava ali, quando a interação do usuário ocorreu (por exemplo, um clique do mouse). Quando a aba ativa muda para outra página, por exemplo devido a concluir o carregamento ou algum outro evento, a permissão não lhe concede mais acesso à aba.</p>
<p>Normalmente, a aba a qual foi concedido <code>activeTab</code> é somente a aba ativa atual, exceto em um caso. A API <code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/menus">menus</a></code> permite a uma extensão criar um item de menu que é exibido se o usuário abrir o menu de contexto sobre uma aba (ou seja, no elemento na lista de abas que permite ao usuário mudar de uma aba para outra). Se o usuário clicar em um item desses, a permissão <code>activeTab</code> é concedida para a aba em que o usuário clicou, mesmo que essa não seja a aba ativa no momento (de acordo com Firefox 63, {{bug(1446956)}}).</p>
<h2 id="Acesso_à_área_de_transferência">Acesso à área de transferência</h2>
<p>Existem duas permissões que permitem à extensão interagir com a área de transferência:</p>
<ul>
<li><code>clipboardWrite</code>: escrever para a área de transferência usando <code>document.execCommand("copy")</code> ou <code>document.execCommand("cut")</code></li>
<li><code>clipboardRead</code>: ler da área de transferência usando <code>document.execCommand("paste")</code></li>
</ul>
<p>Consulte <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Interact_with_the_clipboard">Interação com a área de transferência</a> para saber todos os detalhes sobre isso.</p>
<h2 id="Armazenamento_ilimitado">Armazenamento ilimitado</h2>
<p>A permissão <code>unlimitedStorage</code>:</p>
<ul>
<li>permite que extensões exceder qualquer quota imposta pela API {{WebExtAPIRef("storage.local")}}</li>
<li>no Firefox, permite que extensões criem um <a href="/en-US/docs/Web/API/IndexedDB_API/Browser_storage_limits_and_eviction_criteria#Firefox_specifics">banco de dados IndexedDB "persistente"</a>, sem que o navegador peça ao usuário permissão no momento em que o banco de dados é criado.</li>
</ul>
<h2 id="Examplos">Examplos</h2>
<pre class="brush: json no-line-numbers"> "permissions": ["*://developer.mozilla.org/*"]</pre>
<p>Solicita acesso privilegiado a páginas sob developer.mozilla.org.</p>
<pre class="brush: json no-line-numbers"> "permissions": ["tabs"]</pre>
<p>Solicita acesso a partes privilegiadas da API <code>tabs</code>.</p>
<pre class="brush: json no-line-numbers"> "permissions": ["*://developer.mozilla.org/*", "tabs"]</pre>
<p>Solicita ambas as permissões anteriores.</p>
<h2 id="Compatibilidade_com_navegadores">Compatibilidade com navegadores</h2>
<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
<p>{{Compat("webextensions.manifest.permissions")}}</p>
|