如果扩展程序侵犯用户隐私或会要求用户提供似乎需要的更多权限,则用户不会安装该扩展程序。对用户的权限请求必须合理,并且仅限于实现扩展程序所需的关键信息。收集或传输任何用户数据的扩展程序都必须遵守用户数据隐私权政策。
您可以通过添加这些预防措施来确保用户的身份安全,从而保护并尊重扩展程序用户。 请记住:扩展程序可以访问的数据越少,意外泄露的数据就越少。
减少所需权限
扩展程序可以访问的 API 在清单的权限字段中指定。授予的权限越多,攻击者拦截信息的方式就越多。只应列出扩展程序所依赖的 API,并考虑影响较小的 API。扩展程序请求的权限越少,向用户显示的权限警告就越少。用户更愿意安装显示少量警告的扩展程序。
扩展程序不应通过请求目前不需要但将来可能实现的权限来“保障”对用户数据的访问权限,也不应在未来进行访问。通过扩展程序更新添加新权限,并考虑将其设为可选。
activeTab
使用主机权限注入脚本的扩展程序通常可以替换为 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/" ],
...
}
通过添加可选权限,扩展程序可以说明在用户启用相关功能时为何需要特定权限。该扩展程序可以为用户提供启用该功能的选项。
点击 Okay! 将在后台脚本中触发以下事件。
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();
}
});
});
然后,系统会提示用户使用以下请求。
您还可以在扩展程序更新中实现可选权限。这样一来,用户便可以使用新功能,而无需停用相应扩展程序(如果更新为具有新必需的权限时可能会发生这种情况)。
限制并保护用户信息
仅请求扩展程序所需的最少量用户数据。扩展程序向用户索取的信息越少,就意味着扩展程序遭到入侵时暴露量就越低。
您应谨慎处理所请求的所有用户数据。在具有已注册网域的安全服务器中存储和检索数据。由于扩展程序存储未加密,因此应始终使用 HTTPS 进行连接,并避免将敏感用户数据保留在扩展程序的客户端中。