🎯 系列目標:用 30 天時間,從零開始打造一個專屬輔大學生的課表生成 Chrome 擴充功能
👨💻 作者:輔大智慧資安 412580084
📅 Day 4:Chrome Extension 理論篇 - manifest.json 權限設定概念
昨天我們實作了 manifest.json
的基本資訊,今天我們要深入了解 Chrome Extension 中最重要的安全機制——權限系統。
想像一下,如果沒有權限控制:
權限系統的作用:
✅ 保護使用者隱私和安全
✅ 確保擴充功能只能做它聲稱的事情
✅ 讓使用者明確知道擴充功能會做什麼
Chrome Extension 遵循「最小權限原則」(Principle of Least Privilege):
Chrome Extension 的權限分為兩大類:
這些權限控制擴充功能可以使用哪些 Chrome API:
"permissions": [
"activeTab",
"scripting",
"tabs",
"storage",
"downloads",
"notifications"
]
這些權限控制擴充功能可以存取哪些網站:
"host_permissions": [
"https://portal.fju.edu.tw/*",
"http://estu.fju.edu.tw/*"
]
讓我們深入了解輔大課表生成器需要的各種權限:
activeTab
- 當前分頁權限用途:允許在使用者主動觸發時存取當前分頁
場景:使用者點擊擴充功能圖示時,讀取課表網頁內容
優點:
限制:
scripting
- 腳本注入權限用途:允許向網頁注入 JavaScript 代碼
場景:在課表頁面注入代碼來解析課表資料
API 功能:
tabs
- 分頁管理權限用途:讀取和操作瀏覽器分頁資訊
場景:獲取課表頁面的 URL,判斷是否為輔大網站
可以做的事:
注意:不能讀取分頁內容,需要搭配其他權限
storage
- 資料存儲權限用途:在本地存儲擴充功能的設定和資料
場景:保存使用者的課表設定、快取課表資料
存儲類型:
downloads
- 檔案下載權限用途:允許下載檔案到使用者電腦
場景:將課表匯出為 PDF 或 CSV 檔案
功能:
主機權限控制擴充功能可以存取哪些網站的內容。
"host_permissions": [
"https://portal.fju.edu.tw/*", // 輔大門戶網站的所有頁面
"http://estu.fju.edu.tw/*", // 學生選課系統的所有頁面
"https://*.fju.edu.tw/*" // 輔大所有子網域
]
正確設計:
"host_permissions": [
"https://portal.fju.edu.tw/student/*", // 只存取學生相關頁面
"http://estu.fju.edu.tw/course/*" // 只存取課程相關頁面
]
過度申請(避免):
"host_permissions": [
"https://*/*", // 存取所有 HTTPS 網站
"http://*/*" // 存取所有 HTTP 網站
]
只申請必要權限:
優先使用限制性較強的權限:
activeTab
> host_permissions
高風險權限:
<all_urls>
:存取所有網站tabs
:可能洩露瀏覽歷史cookies
:可能洩露登入狀態防護措施:
權限系統搭配 CSP 提供多層防護:
基於我們的功能需求,分析所需權限:
功能 | 權限 | 理由 |
---|---|---|
讀取課表頁面 | activeTab |
只在使用者點擊時讀取 |
解析課表資料 | scripting |
需要注入解析腳本 |
保存設定 | storage |
本地存儲使用者偏好 |
匯出課表 | downloads |
下載 png 檔案 |
存取輔大網站 | host_permissions |
讀取特定網站內容 |
{
"permissions": ["activeTab", "scripting", "storage", "downloads"],
"host_permissions": [
"https://portal.fju.edu.tw/student/*",
"http://estu.fju.edu.tw/course/*"
]
}
🎯 下集預告:Day 5 - manifest.json 權限設定(實作)🛠️