宣告權限並警告使用者

擴充功能存取網站及大多數 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 權限,因此擁有警告。

TopSite API 的擴充功能警告

開發需要權限的功能,並以警告為選用功能,導入上述功能 隨機提供功能,讓使用者沒有風險地瞭解擴充功能。此外,這個 使用者可利用擴充功能進一步自訂使用體驗, 解釋警告為何。

替換使用中的 Tab 權限

activeTab 權限可授予使用者所在網站的暫時存取權,並允許 擴充功能,可使用目前分頁上的 "tabs" 權限。省去了 許多情況下為 "<all_urls>",而且在安裝時不會顯示警告。

不使用使用 Tab 鍵:

未使用有效分頁的權限 UI

使用作用中分頁:

使用有效分頁的權限 UI

activeTab 權限會在以下情況下,授予擴充功能暫時存取目前使用中分頁的權限: 使用者叫用擴充功能。如果擴充功能遭到入侵,攻擊者就需要等待 並在取得存取權前叫用擴充功能,而且存取權的有效期限 使用者瀏覽或關閉分頁時

為分頁啟用 activeTab 權限時,擴充功能可以:

  • 在該分頁上呼叫 tabs.executeScripttabs.insertCSS
  • 透過會傳回 tabs.Tab 物件的 API,取得該分頁的網址、標題和網站小圖示。
  • 使用 webRequest 將分頁中的網路要求攔截至分頁的主要頁框來源 也能使用 Google Cloud CLI 或 Compute Engine API該擴充功能會暫時取得分頁主頁框來源的主機權限。

下列使用者手勢可啟用 activeTab

授予存取權

如果擴充功能需要存取 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」欄位。

指定擴充功能路徑,然後按一下 [ Pack Extension]

Chrome 會建立兩個檔案:一個 .crx 檔案和一個 .pem 檔案,其中包含擴充功能的 私密金鑰

封裝的擴充功能檔案

請勿遺失私密金鑰!.pem 檔案保存在安全的地方。將會是 必須更新擴充功能。

將檔案拖曳到 Chrome 擴充功能的「管理」頁面,即可安裝 .crx 檔案。

將檔案拖曳到這裡即可安裝

拖放 .crx 檔案後,瀏覽器會詢問能否新增並顯示擴充功能 則警示

新分頁擴充功能警告

權限出現警告

注意:系統會盡可能更新權限表格,但可能會有些微差異 顯示最新警告此外,當與以下角色配對時,某些權限可能不會顯示警告 的其他權限。舉例來說,如果擴充功能一併顯示 "tabs" 警告,系統就不會顯示警告。 要求 "<all_urls>"。如要驗證擴充功能權限最近顯示的最新警告,請按照 按照「查看警告」一節中的步驟進行。

權限 說明 警告
  • "http://*/*"
  • "https://*/*"
  • "*://*/*"
  • "<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.tabschrome.windows。於 許多情況下,擴充功能不需要宣告 "tabs" 權限,就能 並運用這些 API 讀取瀏覽記錄
"topSites" 授予擴充功能 chrome.topSites API 的存取權。 讀取最常造訪的網站清單
"ttsEngine" 授予擴充功能 chrome.ttsEngine API 的存取權。 朗讀使用合成語音朗讀的所有文字
"webNavigation" 授予擴充功能存取 chrome.webNavigation API 的權限。 讀取瀏覽記錄

更新權限

如果更新含有其他權限的擴充功能,可能會暫時停用。使用者必須 在同意接受任何新警告後,重新啟用 API。

如果使用者手動更新含有 分頁 權限的擴充功能, 。

新增分頁權限

如果擴充功能自動更新,系統還會停用擴充功能,直到使用者同意新的擴充功能 授予其要求的權限。

擴充功能已停用

同意權限

如要避免這種情況,您可以選用新功能,並在 資訊清單中的 optional_permissions