如果擴充功能危及隱私,或要求更多必要權限,使用者就無法安裝擴充功能。對使用者的權限要求應合理,且僅限於實作擴充功能所需的重要資訊。會收集或傳輸任何使用者資料的擴充功能必須符合使用者資料隱私權政策。
加入這些預防措施來保護擴充功能使用者的身分,藉此保護及尊重擴充功能使用者。 提醒你:擴充功能可存取的資料越少,越能意外外洩。
減少必要權限
擴充功能可存取的 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/" ],
...
}
加入選用權限可讓擴充功能說明使用者在啟用相關功能時,為何需要特定權限。該擴充功能可提供使用者啟用功能的選項。
點選「確定!」後,背景指令碼中就會觸發下列事件。
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 進行連線,並避免將敏感的使用者資料保留在擴充功能的用戶端端,因為擴充功能儲存空間未加密。