瀏覽器擴展可能擁有存取你所有網頁資料的權限。了解如何評估擴展的安全性,保護你的瀏覽隱私。
是的,如果你授予了足夠寬泛的權限,瀏覽器擴展幾乎可以讀取並修改你在網路上的一切操作。一個擁有「存取你在所有網站上的全部資料」權限的擴展,可以看到你造訪的頁面、你在表單中輸入的文字、你的 Cookie,以及你的瀏覽歷史。絕大多數擴展是誠實的,但真正關鍵的是權限模型:最安全的做法是只安裝少量擴展、授予盡可能窄的存取權限,並定期進行稽核。
擴展究竟能做什麼
當你安裝一個擴展時,你授予了它在資訊清單(manifest)中宣告的一組權限。這些權限決定了擴展能看到和修改你瀏覽行為的程度。許多人會在沒看清提示的情況下直接點擊「新增至瀏覽器」,所以有必要先弄清這些權限類別到底意味著什麼。
一個擁有寬泛主機權限的擴展,通常可以:
- 讀取頁面內容——你開啟的每個頁面的完整文字、連結和結構
- 讀取並填寫表單欄位——包括搜尋框、登入表單和付款欄位
- 存取 Cookie——其中可能包含讓你保持登入狀態的工作階段權杖
- 讀取你的瀏覽歷史——你造訪過的網站和網址清單
- 注入指令碼——在其他網站內部執行它自己的 JavaScript
- 發起網路請求——把它收集到的資料傳送到遠端伺服器
關鍵在於:擴展是帶著你的活動工作階段,執行在你的瀏覽器內部的。它不是一個受同源政策約束的遠端網站,而是一個被信任的「內部人員」。這正是為什麼一個微小的權限失誤,可能帶來巨大的隱私影響。這種資訊清單層級的權限授予,與網站自身可查詢的頁面層級 navigator.permissions.query() API 是完全不同、寬泛得多的概念——參見 Permissions API 指紋了解那個獨立、更窄的機制如何運作。
用通俗語言理解權限模型
現代瀏覽器(Chrome 的 Manifest V3、Firefox 的 WebExtensions)透過一個資訊清單檔案來描述擴展的影響範圍。下面是一個簡化的範例,展示你在安裝時其實是在核准的權限部分:
{
"name": "範例擴展",
"permissions": ["cookies", "tabs", "storage"],
"host_permissions": ["<all_urls>"],
"content_scripts": [
{
"matches": ["<all_urls>"],
"js": ["content.js"]
}
]
}
其中 <all_urls> 這個值最值得警惕。它意味著擴展可以在你造訪的每一個網站上執行它的內容指令碼、讀取這些頁面並對其進行操作。相較之下,限定在單一網域上的擴展只能觸及那一個網站。
主機權限與 <all_urls>
主機權限定義了擴展可以在哪些網站上執行。像 https://*.example.com/* 這樣的模式將其限制在一個服務內;而 <all_urls> 或 *://*/* 則授予了對整個網路的存取權限。寬泛的主機權限,是決定一個擴展隱私影響範圍的最大單一因素。
activeTab 與點擊時存取
activeTab 權限要安全得多:它僅在你點擊擴展圖示時授予對目前分頁的暫時存取權限,而當你離開該頁面後,權限即被收回。基於 activeTab 建構的擴展無法在背景悄悄地監視你。如果瀏覽器提供這一選項,把網站存取設為「點擊時執行」,就能把寬泛的擴展變成隨選執行的擴展。
內容指令碼
內容指令碼是擴展注入到你所造訪頁面中的程式碼。它可以讀取 DOM、觀察你輸入的內容,並改寫頁面。內容指令碼既是正當功能(價格比較、文法檢查)的實作機制,也是濫用式資料收集的手段。它的 matches 模式的涵蓋範圍,決定了它能看到你多大比例的瀏覽行為。
好擴展也會「變壞」
風險並不僅來自一開始就心懷惡意的擴展。還有幾條不那麼明顯的路徑,會通向同樣的結果。
- **被棄用的擴展。**開發者停止維護某個擴展,程式碼仍然能用,但安全漏洞無人修補,這個擴展就變成了一個帶著寬泛權限、陳舊失修的入口。
- **被收購後用於牟利的擴展。**一個廣受信任的熱門擴展被賣給新所有者,對方悄悄推送一次更新,注入廣告、聯盟連結或追蹤程式碼。你的瀏覽器會自動更新它,而你多年前授予的權限依然有效。
- **供應鏈遭攻擊。**某個擴展正當地打包了第三方函式庫或依賴遠端設定;一旦該依賴或伺服器遭攻陷,惡意酬載就會送達所有安裝了該擴展的使用者。
真正危險的時刻,往往不是安裝那天,而是幾個月後那次悄無聲息的自動更新——它依託的,正是你早已核准並遺忘的權限。
這就是為什麼「我安裝時它還是好好的」並不能作為保證。寬泛的權限是一種長期存在的隱患,可能在未來任何一次更新中被啟動。
擴展與指紋辨識
除了直接讀取你的資料,擴展還會讓你更容易被跨站追蹤。你所安裝的那一組特定擴展,以及它們對頁面所做的改動,都可能成為你瀏覽器指紋的一部分。
它發生的幾種方式:
- **可被探測的網頁可存取資源。**許多擴展會暴露內部檔案,網站可以探測這些檔案,從而判斷你執行了哪些擴展。
- **DOM 修改。**注入元素或改寫頁面的擴展,會留下一致且可被偵測的痕跡,追蹤者能夠讀取它們。
- **行為副作用。**攔截器和隱私工具會改變網路與算繪行為,而這些改變——頗為諷刺地——反而可以被測量。
由此產生一個悖論:一個小眾的隱私擴展,可能讓你的瀏覽器變得更容易辨識,而非更難,因為很少有其他使用者擁有完全相同的設定。想了解你整體的指紋狀況,可閱讀我們的瀏覽器指紋完全指南;想比較不同的強化方案,可參閱我們的隱私工具比較。
安裝前如何評估一個擴展
對待每個擴展,都應像授予某個應用程式存取你帳戶的權限一樣謹慎,因為從功能上看,你做的事情與此非常接近。請逐項核對下面這份清單。
| 訊號 | 風險較低 | 風險較高 |
|---|---|---|
| 權限範圍 | activeTab、單一主機模式 | <all_urls>、寬泛主機權限 |
| 發布者 | 知名公司或老牌開發者 | 匿名或全新帳戶 |
| 使用者量與評價 | 安裝量大、評價穩定 | 使用者極少,或評價突然激增 |
| 最後更新時間 | 近期且定期更新 | 多年未動(已棄用) |
| 原始碼 | 開源、可稽核 | 閉源、混淆、僅有壓縮程式碼 |
| 資料處理方式 | 清晰、最小化的隱私說明 | 隱私政策含糊或乾脆沒有 |
沒有任何單一訊號能下定論,但它們的組合會講出一個故事。一個限定為 activeTab、由活躍開發者維護的開源擴展,與一個閉源、<all_urls>、三年前最後一次更新的擴展,是截然不同的兩回事。
你也可以檢查自己瀏覽器中目前正在執行的擴展。BrowserInsight 的外掛與擴展偵測工具能幫你查看可被偵測到的擴展,並理解它們的影響範圍;而指紋偵測工具則會展示你的整體設定如何影響可追蹤性。
降低風險的實用步驟
你不必徹底放棄擴展——你需要的是有意識地去管理它們。
1. 遵循最小權限原則
優先選擇請求權限最窄的擴展。如果兩個擴展能完成同樣的工作,就選限定為 activeTab 或特定主機的那個,而不是要求存取所有網站的那個。
2. 使用「點擊時」存取
對於支援該選項的擴展,把網站存取設為「點擊時執行」,讓它們只在你主動呼叫時才執行。這能在不損失功能的前提下,消除大部分背景資料收集。
3. 定期稽核
每年一到兩次,開啟瀏覽器的擴展管理頁面,刪除所有你已不再使用的擴展。每個已安裝的擴展都是攻擊面;一個用不上的擴展,就是純粹的負擔。
4. 留意更新與所有權變更
如果一個原本簡單的擴展突然開始請求新的、更寬泛的權限,要保持警惕——瀏覽器通常會提示你。權限的突然擴張,可能意味著所有權或意圖發生了變化。
5. 在適當場景下使用企業政策
在受管理的環境中,管理員可以透過瀏覽器政策將經過核准的擴展加入白名單,並封鎖其餘所有擴展。這是大規模場景下最可靠的控制手段,徹底免去了逐個使用者自行判斷的環節。
常見問題
瀏覽器擴展能讀取我的密碼嗎?
如果一個擴展有權在你登入的網站上執行,並有權讀取表單欄位,那麼它在技術上就能在密碼被提交之前,觀察到你輸入的內容,包括密碼。這正是為什麼向不受信任的擴展授予寬泛主機權限非常危險。對於執行在頁面上的內容指令碼而言,密碼欄位並不會自動成為禁區。
來自官方商店的擴展一定安全嗎?
不一定。官方商店會進行自動化審核和部分人工審核,能過濾掉大量純粹的惡意軟體,但審核並不完美。被棄用的擴展、所有權轉移,以及引入追蹤的更新,都可能矇混過關。出現在商店裡能降低風險,但無法消除風險。
隱私擴展會讓我更難被追蹤嗎?
有時是,有時恰恰相反。內容攔截器可以阻止許多追蹤器,但你所執行的那一組與眾不同的擴展,以及它們對頁面所做的改動,反而可能增加你的指紋特徵。請盡量選擇被廣泛使用、維護良好的工具,而非小眾冷僻的工具,並透過指紋偵測來驗證最終的淨效果。
裝多少擴展算太多?
並沒有一個固定的數字,但每個擴展都會增加權限、攻擊面和潛在的指紋訊號。一個不錯的原則是:只保留你正在積極使用的擴展,優先選擇窄權限,其餘一律刪除。少而精的擴展,勝過一長串被遺忘的擴展。


