The activeTab permission(activeTab 权限)

当用户调用扩展程序时,activeTab 权限允许扩展程序临时访问当前活动的选项卡 - 例如通过单击其操作(action)。当用户在该页面上时,对该选项卡的访问持续存在,并在用户导航离开或关闭该选项卡时被撤销。

这可以作为 <all_urls> 的许多用途的替代方法,但在安装过程中不显示警告消息:

注意:从 M72 开始,将授予 activeTab 权限,直到用户导航到不同的来源。也就是说,如果用户在 https://example.com 上调用扩展程序,然后导航到 https://example.com/foo,该扩展程序将继续访问该页面。如果用户导航到 https://chromium.org,访问将被撤销。

没有活动标签(activeTab):

12

使用 activeTab

13

# Example

请参阅 Page Redder 示例扩展:

{
  "name": "Page Redder",
  "version": "2.0",
  "permissions": [
    "activeTab"
  ],
  "background": {
    "service_worker": "background.js"
  },
  "action": {
    "default_title": "Make this page red"
  },
  "manifest_version": 3
}
// Called when the user clicks on the action.
chrome.action.onClicked.addListener(function(tab) {
  // No tabs or host permissions needed!
  console.log('Turning ' + tab.url + ' red!');
  chrome.scripting.executeScript({
    code: 'document.body.style.backgroundColor="red"'
  });
});

# Motivation(动机)

考虑一个具有操作(action)和上下文菜单项(menu item)的网络剪辑扩展。这个扩展可能只有在它的浏览器操作被点击时,或者当它的上下文菜单项被执行时才真正需要访问选项卡。

如果没有 activeTab,这个扩展需要请求对每个网站的完全、持久的访问,这样它才能在用户碰巧调用时完成它的工作。委托给这样一个简单的扩展是很大的力量。如果扩展程序遭到破坏,攻击者就可以访问扩展程序拥有的所有内容。

相比之下,具有 activeTab 权限的扩展程序仅响应显式用户手势获得对选项卡的访问。如果扩展程序遭到破坏,攻击者将需要等待用户调用扩展程序才能获得访问权限。并且该访问仅持续到选项卡被导航或关闭为止。

# activeTab 允许什么(What activeTab allows)

虽然为选项卡启用了 activeTab 权限,但扩展程序可以:

  • 在该选项卡上调用 scripting.insertCSS
  • 通过返回 tabs.Tab 对象的 API 获取该选项卡的 URL、标题和图标(本质上,activeTab 临时授予选项(tabs)卡权限)。
  • 使用 webRequest API 将选项卡中的网络请求拦截到选项卡的主框架源。该扩展程序临时获取选项卡主框架来源的主机权限。

# 调用 activeTab(Invoking activeTab)

以下用户手势启用 activeTab

By.一粒技术服务

results matching ""

    No results matching ""