擴充功能存取網站及大多數 Chrome API 的功能,取決於其宣告 權限。請僅將權限限制在運作所需的權限。 限制權限會建立擴充功能的能力,並減少資料可能產生的費用 攻擊者入侵擴充功能實作可保護擴充功能及其使用者 提供明確、最少和選用的權限
管理權限
權限是已知字串,參照了 Chrome API 或比對模式, 一或多個主機在資訊清單中列出這些角色,並指定為必要權限 選用權限。
{
"name": "Permissions Extension",
...
// required permissions
"permissions": [
"activeTab",
"contextMenus",
"storage"
],
// optional permissions
"optional_permissions": [
"topSites",
"http://www.developer.chrome.com/*"
],
...
"manifest_version": 2
}
將必要權限限制為僅執行擴充功能核心功能所需的權限。一個 擴充功能不得要求超過目前所需權限;無法提供相關證據 要求更新所需的權限
選用功能所需的權限應註冊為選用權限。這個 讓使用者決定擴充功能需要多少存取權,以及哪些功能 。
確認必要權限
簡易的擴充功能可能需要要求多項權限,且許多權限都會顯示 warning。如果擴充功能的警告有限,或僅提供有限的警告,使用者較有可能信任該擴充功能 都會提供明確的權限
識別擴充功能的核心功能,以及需要哪些權限。您可以考慮使用 讓某些功能需要權限出現警告時為選用。
透過事件觸發選用權限
選用權限範例擴充功能的核心功能將覆寫新分頁。 其中一項功能是顯示使用者當天的目標。這項功能只需要儲存空間 權限,且並不會提出警告。
這項擴充功能具有其他功能顯示使用者的熱門網站這項功能需要 topSites 權限,因此擁有警告。
開發需要權限的功能,並以警告為選用功能,導入上述功能 隨機提供功能,讓使用者沒有風險地瞭解擴充功能。此外,這個 使用者可利用擴充功能進一步自訂使用體驗, 解釋警告為何。
替換使用中的 Tab 權限
activeTab
權限可授予使用者所在網站的暫時存取權,並允許
擴充功能,可使用目前分頁上的 "tabs"
權限。省去了
許多情況下為 "<all_urls>"
,而且在安裝時不會顯示警告。
不使用使用 Tab 鍵:
使用作用中分頁:
activeTab
權限會在以下情況下,授予擴充功能暫時存取目前使用中分頁的權限:
使用者叫用擴充功能。如果擴充功能遭到入侵,攻擊者就需要等待
並在取得存取權前叫用擴充功能,而且存取權的有效期限
使用者瀏覽或關閉分頁時
為分頁啟用 activeTab
權限時,擴充功能可以:
- 在該分頁上呼叫
tabs.executeScript
或tabs.insertCSS
。 - 透過會傳回
tabs.Tab
物件的 API,取得該分頁的網址、標題和網站小圖示。 - 使用 webRequest 將分頁中的網路要求攔截至分頁的主要頁框來源 也能使用 Google Cloud CLI 或 Compute Engine API該擴充功能會暫時取得分頁主頁框來源的主機權限。
下列使用者手勢可啟用 activeTab
:
- 執行瀏覽器動作
- 執行網頁動作
- 執行內容選單項目
- 透過 commands API 執行鍵盤快速鍵
- 接受 omnibox API 建議
授予存取權
如果擴充功能需要存取 file://
網址,或在無痕模式下運作,使用者必須執行以下動作:
啟用在擴充功能詳細資料頁面 (網址為 chrome://extensions) 中這些功能的存取權。
擴充功能可呼叫
extension.isAllowedIncognitoAccess()
或能在 file://
網址上執行
extension.isAllowedFileSchemeAccess()
。
瞭解權限
權限警告旨在說明 API 授予擴充功能使用者的權限,
其中部分警告最初可能不夠清楚例如,新增 "tabs"
權限會導致系統顯示看似不相關的警告:擴充功能可以讀取你的瀏覽記錄
活動。雖然 chrome.tabs
API 可能只用於開啟新分頁,但也可以用這個 API
,即可使用各個新開啟的 tabs.Tab 物件來查看與每個新開啟分頁相關聯的網址。
請盡可能導入選擇性權限或效能較差的 API,避免鬧鐘鈴響 則警示
查看警告
如果擴充功能是以未封裝檔案形式載入,就不會顯示權限警告。若要檢視
擴充功能的權限警告,請前往 chrome://extensions
,確認已啟用開發人員模式
然後按一下 [Pack Extension]。
在「擴充功能根目錄」欄位中指定擴充功能資料夾的路徑,然後按一下 [Pack Extension] 按鈕。忽略首次套件的「Private key」欄位。
Chrome 會建立兩個檔案:一個 .crx
檔案和一個 .pem
檔案,其中包含擴充功能的
私密金鑰
請勿遺失私密金鑰!將 .pem
檔案保存在安全的地方。將會是
必須更新擴充功能。
將檔案拖曳到 Chrome 擴充功能的「管理」頁面,即可安裝 .crx
檔案。
拖放 .crx
檔案後,瀏覽器會詢問能否新增並顯示擴充功能
則警示
權限出現警告
注意:系統會盡可能更新權限表格,但可能會有些微差異
顯示最新警告此外,當與以下角色配對時,某些權限可能不會顯示警告
的其他權限。舉例來說,如果擴充功能一併顯示 "tabs"
警告,系統就不會顯示警告。
要求 "<all_urls>"
。如要驗證擴充功能權限最近顯示的最新警告,請按照
按照「查看警告」一節中的步驟進行。
權限 | 說明 | 警告 |
---|---|---|
|
可授予擴充功能存取所有主機的權限。如要避免宣告任何主機權限,您可以使用 activeTab 權限。 | 讀取及變更你在造訪過的網站上的所有資料 |
"https://HostName.com/" |
授予擴充功能存取 "https://HostName.com/" 的權限。您可能不會宣告任何
主機權限 (使用 activeTab 權限)。 |
讀取及變更你在 HostName.com 中的資料 |
"bookmarks" |
授予擴充功能 chrome.bookmarks API 的存取權。 | 讀取及變更書籤 |
"clipboardRead" |
如果擴充功能使用 document.execCommand('paste') ,則為必要欄位。 |
讀取你複製及貼上的資料 |
"clipboardWrite" |
指出擴充功能使用 document.execCommand('copy') 或
document.execCommand('cut') 。 |
修改你複製及貼上的資料 |
"contentSettings" |
授予擴充功能 chrome.contentSettings API 的存取權。 | 變更可控管網站的設定存取 Cookie、JavaScript、外掛程式 地理位置、麥克風、相機等 |
"debugger" |
授予擴充功能 chrome.debugger API 的存取權。 |
|
"declarativeNetRequest" |
授予擴充功能 chrome.declarativeNetRequest API 的存取權。 | 封鎖網頁內容 |
"desktopCapture" |
授予擴充功能 chrome.desktopCapture API 的存取權。 | 擷取螢幕畫面內容 |
"downloads" |
授予擴充功能 chrome.downloads API 的存取權。 | 管理下載內容 |
"geolocation" |
允許擴充功能使用 HTML5 geolocation API 而不會提示使用者授予權限 | 偵測你的實際位置 |
"history" |
授予擴充功能 chrome.history API 的存取權。 | 讀取及變更瀏覽記錄 |
"management" |
可授予擴充功能 chrome.management API 的存取權。 | 管理應用程式、擴充功能和主題 |
"nativeMessaging" |
授予擴充功能存取原生通訊 API 的權限。 | 與協作的原生應用程式通訊 |
"notifications" |
授予擴充功能 chrome.notifications API 的存取權。 | 顯示通知 |
"pageCapture" |
授予擴充功能存取 chrome.pageCapture API 的權限。 | 讀取及變更你在造訪過的網站上的所有資料 |
"privacy" |
授予擴充功能存取 chrome.privacy API 的權限。 | 變更隱私權相關設定 |
"proxy" |
授予擴充功能 chrome.proxy API 的存取權。 | 讀取及變更你在造訪過的網站上的所有資料 |
"system.storage" |
授予擴充功能存取 chrome.system.storage API 的權限。 | 識別並退出儲存裝置 |
"tabCapture" |
可授予擴充功能 chrome.tabCapture API 的存取權。 | 讀取及變更你在造訪過的網站上的所有資料 |
"tabs" |
授予擴充功能存取多個 API 所使用 Tab 物件特權欄位的權限欄位
包括 chrome.tabs 和 chrome.windows。於
許多情況下,擴充功能不需要宣告 "tabs" 權限,就能
並運用這些 API |
讀取瀏覽記錄 |
"topSites" |
授予擴充功能 chrome.topSites API 的存取權。 | 讀取最常造訪的網站清單 |
"ttsEngine" |
授予擴充功能 chrome.ttsEngine API 的存取權。 | 朗讀使用合成語音朗讀的所有文字 |
"webNavigation" |
授予擴充功能存取 chrome.webNavigation API 的權限。 | 讀取瀏覽記錄 |
更新權限
如果更新含有其他權限的擴充功能,可能會暫時停用。使用者必須 在同意接受任何新警告後,重新啟用 API。
如果使用者手動更新含有 分頁 權限的擴充功能, 。
如果擴充功能自動更新,系統還會停用擴充功能,直到使用者同意新的擴充功能 授予其要求的權限。
如要避免這種情況,您可以選用新功能,並在
資訊清單中的 optional_permissions
。