# 保护用户隐私

如果扩展程序损害了他们的隐私或要求提供需要的更多权限,则用户将不会安装该扩展程序。权限请求应对用户有意义,并且限于实现扩展所需的关键信息。 收集或传输任何用户数据的扩展必须遵守用户数据隐私策略 (opens new window)

通过包括以下预防措施来保护和尊重用户,以确保其身份安全。切记:扩展可以访问的数据越少,意外泄漏的数据就越少。

# 减少所需的权限

扩展可以访问的 API 在 manifest 的权限字段中指定。赋予的权限越多,攻击者拦截信息的途径就越多。 仅列出扩展所依赖的 API,并应考虑侵入性较小的选项。扩展程序请求的权限越少,向用户显示的权限警告就越少。用户更有可能安装带有有限警告的扩展程序。

扩展不应通过请求用户当前不需要但将来可能会实现的权限来 “未来证明” 对用户数据的访问。在扩展更新中包含新权限,并考虑将其设为可选。

# activeTab

使用 host 权限注入脚本的扩展通常可以被 activeTab 代替。仅当用户调用扩展时,activeTab 权限才会授权扩展对当前活动选项卡的临时访问权限。当用户离开或关闭当前选项卡时,访问被切断。 它是 < all_urls > 的许多用途的替代方法。

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

在安装过程中,activeTab 权限不显示任何警告消息。

# 选择可选权限

通过包含可选权限,使用户能够从扩展中选择所需的功能和权限。如果某个功能对于扩展程序的核心功能不是必需的,请将其设为可选,然后将 API 或域名移至 optional_permissions 字段中。

 {
    "name": "Very Secure Extension",
    ...
    "optional_permissions": [ "tabs", "https://www.google.com/" ],
    ...
  }

可选权限可以使扩展向用户解释启用相关功能时为何需要特定权限。该扩展可以为用户提供启用功能的选项。

enable_html

单击确定!将在后台脚本中触发以下事件。

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();
      }
    });
  });

然后,将向用户提示以下请求。

enable_permissions

也可以在扩展更新中实现。 这样做将使用户可以使用该新功能,而无需禁用该扩展,如果使用新的所需权限进行更新,可能会发生这种禁用的情况。

# 限制和加密用户信息

仅请求扩展所需的最少用户数据。扩展程序向用户询问的信息越少,意味着扩展程序受到威胁时所面临的风险就越小。

所有请求的用户数据都应谨慎对待。在具有注册域的安全服务器中存储和检索数据。始终使用 HTTPS 进行连接,并避免将敏感的用户数据保留在扩展的客户端中,因为扩展存储未加密。