如果擴充功能會侵犯隱私權或要求過多權限,使用者就不會安裝。對使用者的權限要求必須合理,且僅限於實作擴充功能所需的關鍵資訊。如果擴充功能會收集或傳輸任何使用者資料,就必須遵守使用者資料隱私權政策。
請採取下列防護措施,確保擴充功能使用者身分安全,保護並尊重使用者。 請注意,擴充功能可存取的資料越少,意外洩漏的資料就越少。
減少必要權限
擴充功能可存取的 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 連線,並避免在擴充功能的用戶端保留敏感的使用者資料,因為擴充功能儲存空間不會加密。