網站放在 GitHub,有哪些免費的資安功能該打開?
一句話回答
GitHub 免費帳號就有幾項資安功能,不少要自己打開。私有專案能開的主要是 Dependabot:用到的套件出現已知漏洞或惡意版本時發警告,有修補版本時還會自動開 PR 幫你升級。帳號本身要開兩步驟驗證。公開專案另外免費提供機密掃描、推送保護、程式碼掃描與私下回報漏洞。
先說結論:免費就有,但不少要自己打開
用 AI 做出網站之後,程式碼多半放在 GitHub。GitHub 內建一整排資安功能,免費帳號就能用其中好幾項。有幾項預設就開著,Dependabot 這類則要到設定頁確認、自己打開。
能用哪些,看專案是公開還是私有。GitHub 的帳務文件寫明,所有公開專案都能用程式碼掃描與機密掃描。私有專案在免費方案能開的,主要是 Dependabot 這一組。
公開、私有、方案這些名詞如果還不熟,可以先看 GitHub 是什麼? 與 GitHub 要錢嗎?。下面這張表是各功能在三種情況下能不能用。
為什麼用 AI 做的網站,更需要有人盯著套件
AI 寫程式很少從零開始。它會替專案裝上很多套件,也就是別人寫好、公開給大家用的現成零件,像是處理日期、送出表單、產生圖片。套件是什麼、怎麼裝,在 npm 是什麼? 有完整說明。
套件也會被發現漏洞。漏洞公開之後,攻擊的人就知道哪些版本可以下手,你的網站卻不會自己跳出通知。那段程式不是你寫的,你多半也不知道專案裝了它,因為裝一個套件,常會連帶裝進它需要的其他套件,這叫間接相依。
Dependabot 做的事,就是記住專案用了哪些套件,拿去跟漏洞資料庫比對。對到了就通知你,有修好的版本還會直接替你準備好升級。
第一道防線:先把帳號顧好
專案設定得再好,帳號被盜一樣全部失守。這一段跟專案公開或私有無關,每個人都該做。
GitHub 從 2023 年 3 月起,分批要求在 GitHub 上貢獻程式碼的使用者開啟兩步驟驗證,收到通知的人要在期限內設定。沒收到通知不代表可以不開,官方的說法是強烈建議。
授權 AI 工具連上 GitHub 前要檢查什麼,見 GitHub 是什麼? 裡的對應段落。
- 開兩步驟驗證(2FA):登入時除了密碼,還要輸入一組只有你手機上才有的驗證碼。路徑是右上角頭像 → Settings → Password and authentication
- 主要方式選驗證器 App:官方建議用 TOTP 驗證器 App 當主要方式,它會在手機上不斷產生新的六位數驗證碼。再加一把通行金鑰(passkey)或實體安全金鑰當備用。簡訊也能用,但官方提醒簡訊可能被攔截
- 復原碼存進密碼管理工具:開完 2FA 會拿到一組復原碼。官方寫得很直接,兩步驟驗證的憑證弄丟了,GitHub 客服也沒辦法幫你恢復帳號
- 定期看一次誰能進你的帳號:Settings 裡的 Sessions(目前登入中的裝置)、SSH and GPG keys、Applications(授權過的第三方 App),以及 Developer settings 底下的 Personal access tokens。不認得的就移除
- 權杖用細粒度的:給 AI 工具或自動化用的個人存取權杖(token),官方建議優先用 fine-grained(細粒度)版本,可以只開放特定專案,並設定到期日。舊式(classic)權杖能存取你看得到的每一個專案
- 有異常就查 Security log:Settings 左側 Archives 底下的 Security log,列出最近 90 天的帳號安全紀錄
Dependabot 是什麼:替你盯套件的機器人
Dependabot 是 GitHub 內建的自動化功能,官方文件寫明所有 GitHub 上的專案都能用,私有專案、免費帳號也一樣。
它比對的對象是 GitHub Advisory Database,GitHub 維護的公開漏洞資料庫,只有經過 GitHub 審核的漏洞公告會觸發警告。它也不是定時巡邏。觸發的時機有兩個:資料庫新增了一筆漏洞公告,或是你的套件清單有變動,例如 AI 剛幫你裝了新套件。掃的是專案的預設分支,通常就是 main。
套件清單要準。官方建議保留 lock 檔(npm 專案是 package-lock.json),它記下每個套件實際裝的確切版本,Dependabot 才查得到間接相依的漏洞。lock 檔為什麼不能隨手刪,見 npm 是什麼?。
- 相依關係圖(Dependency graph):先整理出專案用了哪些套件,下面幾項都靠它。公開專案預設開著,私有專案要確認有沒有開
- Dependabot alerts(漏洞警告):用到的套件有已知漏洞時發警告
- Malware alerts(惡意套件警告):用到的套件被認定是惡意程式時發警告。2026 年 7 月起涵蓋的範圍擴大,目前支援 npm、pip、Composer、Go、Maven、NuGet、RubyGems、Rust 的套件
- Dependabot security updates(安全更新):有修補版本時,自動開一個 PR 把套件升上去
- Dependabot version updates(版本更新):不管有沒有漏洞,定期把套件升到新版。要在專案裡另外放一個設定檔才會啟動
動手打開:私有專案、免費帳號也做得到
以下是 2026 年 10 月 GitHub 畫面上的選單名稱。GitHub 改版很勤,名稱對不上時,認「Security and quality」這幾個字找就好。
- 打開專案設定:進到 repo 頁面,點上方的 Settings
- 找到資安設定頁:左側欄「Security and quality」底下的 Advanced Security
- Dependency graph:確認是 On
- Dependabot alerts 與 Malware alerts:兩個都打開
- Dependabot security updates:打開。下面的 Grouped security updates 也可以一起開,它會把同一個套件管理工具的安全更新合成一個 PR,比較好處理
- 一次套用到所有專案:右上角頭像 → Settings → 左側 Security 底下的 Code security。相依關係圖、漏洞警告、安全更新都有 Enable all,可以把你名下所有專案一起打開。勾選 Automatically enable for new repositories,之後新開的專案也會自動套用
收到警告,怎麼看懂
警告放在 repo 上方的「Security and quality」分頁,左側 Dependabot 底下的 Vulnerabilities。惡意套件的警告在旁邊的 Malware。
第一次打開功能時,GitHub 不會把找到的每一筆都通知你,要自己點進去看。之後有新警告,預設會通知對專案有寫入以上權限、而且有關注(watch)這個專案的人,依官方的通知設定頁,是發現 critical 或 high 等級的新漏洞時才寄 Email 與站內通知。
- 嚴重度:分 Low、Medium、High、Critical 四級,先處理 Critical 和 High
- Development 標籤:這個套件只在開發時用到,例如檢查程式碼格式的工具,不會跟著網站上線。官方建議先處理正式環境會用到的套件
- Transitive 標籤:這是間接相依,不是你的專案直接裝的,是被某個套件帶進來的
- 受影響版本與修補版本:點進警告,會看到哪些版本有問題、升到哪一版才安全。沒寫修補版本,代表還沒有修好的版本可以升
- 預設排序:清單預設用 Most important 排序,會綜合漏洞分數、套件是不是只在開發時用到等因素排出先後
- 暫時修不了的:可以選一個原因把警告關掉(dismiss),還沒修好的警告之後可以重新打開。不要為了讓清單變乾淨就一次全部關掉
安全更新:修補用的 PR,它幫你開好
打開安全更新之後,只要警告有修補版本,Dependabot 就會試著替它開一個 PR(合併請求,見 GitHub 是什麼?),把套件升到含修補的最低版本。PR 合併之後,對應的警告會跟著關閉。
它不是每次都修得動。官方文件列出的限制有這幾個:
- 修不動就回報錯誤:例如新版本跟專案裡其他套件衝突,它會在警告上註明無法更新,這時要人工處理
- npm 以外的間接相依:要連上層套件一起升級才修得好的,Dependabot 不會自動處理
- 同時最多 10 個:安全更新的 PR 有固定上限,同時最多開 10 個
- 長期沒人理會就暫停:維護者一直沒處理 Dependabot 的 PR,它會暫停更新並通知你
- 合併前先看過:PR 頁面會跑專案設定好的自動檢查。部署平台如果會替每個 PR 產生預覽網址,先點進去把主要頁面看一遍再合併
我收到 GitHub Dependabot 開的安全更新 PR,請幫我判斷能不能合併。我會貼上警告內容與 PR 說明。 1. 用白話說明這個漏洞是什麼,會不會影響我的網站 2. 這次升級改了版本號的哪一碼(例如 1.2.3 升到 1.4.0),有沒有可能改到既有功能 3. 合併前我應該實際點開哪幾頁確認,列成清單 4. 如果你判斷有風險,告訴我合併前要先做什麼 沒把握的地方直接說不確定,不要猜
版本更新:要不要開?
安全更新只在有漏洞時出動。版本更新則是定期把套件升到新版,讓專案不要落後太多。官方的說法是,平常就用比較新的版本,真的出現漏洞時,安全更新也比較容易修得上去。
它要在專案裡放一個 .github/dependabot.yml 設定檔才會啟動。設定頁 Dependabot version updates 旁邊有 Configure dependabot.yml 按鈕可以從那裡開始,也可以把下面的範例交給 AI,請它幫你加進專案。
幾個跟工作量有關的預設值:版本更新的 PR 同時最多 5 個,額滿就先不開新的。新版本發布後,預設等 3 天才提出更新(2026 年 7 月起的預設,安全更新不受影響)。設定裡的 groups 可以把多個套件的更新合成一個 PR,下面的範例把小改版合在一起,大改版另外開。版本號每一碼的意思見 npm 是什麼?。
沒有人固定處理 PR 的話,建議先只開安全更新。另外,Dependabot 雖然跑在 GitHub Actions 上,官方寫明用標準機器跑不會扣你的 Actions 免費分鐘數。
# 放在專案的 .github/dependabot.yml version: 2 updates: # 網站用到的 npm 套件 - package-ecosystem: "npm" directory: "/" schedule: interval: "weekly" # 小改版合成一個 PR,大改版(版本號第一碼變動)各自開,方便分開檢查 groups: minor-and-patch: update-types: - "minor" - "patch" # GitHub Actions 自動化用到的元件 - package-ecosystem: "github-actions" directory: "/" schedule: interval: "weekly"
機密掃描與推送保護:擋住外洩的金鑰
機密掃描(secret scanning)找的是程式碼裡的 API 金鑰、密碼這類不該公開的字串。金鑰外洩為什麼麻煩,見 AI 幫我寫的程式,會不會把 API 金鑰外洩出去?。
公開專案免費,官方寫明會自動執行,掃描範圍是所有分支的完整歷史紀錄,還包括 issue、PR 這些地方。掃到合作廠商的金鑰時,GitHub 會直接通知那家廠商,讓對方可以撤銷。
推送保護(push protection)再往前一步:含有金鑰的程式碼在推上 GitHub 之前就先擋下來。它分成個人和專案兩種:
- 個人版(Push protection for yourself):預設開啟,你推到任何公開專案時都會檢查,不管那個專案有沒有開機密掃描。在頭像 → Settings → Code security 可以確認
- 專案版:公開專案到 Settings → Advanced Security,在 Secret Protection 右邊按 Enable,再打開下面的 Push protection。之後協作者推上來的程式碼也會被檢查
- 被擋下來的時候:畫面會顯示說明。把金鑰從程式碼拿掉、改放環境變數,再重新提交。也可以選一個原因強制推上去,但除非確定那是測試用的假金鑰,不要這樣做
- AI 工具的金鑰也在名單上:2026 年 10 月,GitHub 新增 Lovable、Supabase 等服務的金鑰偵測,Anthropic 的新型 API 金鑰也改成推送保護預設就擋
- 私有專案:免費方案沒有機密掃描。私有專案要用,得是 Team 以上的組織方案再加購 Secret Protection,價格見 GitHub 要錢嗎?。不想加購,上線前就自己用免費工具掃一遍,做法見 API 金鑰外洩那篇
- 已經外洩了:官方的建議是把金鑰當成已經被盜用,立刻到該服務的後台輪替,換一把新的。只從 Git 歷史裡刪掉既費時,撤銷之後通常也沒必要
程式碼掃描:檢查你自己的程式碼
Dependabot 看的是別人寫的套件。程式碼掃描(code scanning)看的是專案自己的程式碼,找出裡面的漏洞和錯誤,GitHub 用的分析引擎叫 CodeQL。
公開專案免費。私有專案要 Team 以上的方案加購 Code Security 才能用。公開專案用預設設定(default setup)打開,幾乎不用調整:
- 路徑:Settings → Advanced Security,在 Code Security 底下 CodeQL analysis 右邊選 Set up → Default,確認後按 Enable CodeQL
- 什麼時候掃:打開的當下、每次推到預設分支或受保護的分支、每個 PR,以及每週一次(前提是最近 180 天內有人推過程式碼或開過 PR)
- 支援的語言:JavaScript/TypeScript、Python、Go、Java/Kotlin、C#、C/C++、Ruby、Rust、Swift,以及 GitHub Actions 的設定檔
- 費用:它跑在 GitHub Actions 上,公開專案用 GitHub 的標準機器跑不收費
- Copilot Autofix:用 CodeQL 的專案預設會開,掃到問題時由 AI 提出修正建議,不需要另外訂閱 Copilot
其他三個設定:私下回報漏洞、安全政策、分支保護
- 私下回報漏洞(Private vulnerability reporting):讓發現漏洞的人私下通知你,不用公開開 issue 讓所有人看到。只限公開專案,在 Settings → Advanced Security 打開
- 安全政策(SECURITY.md):在專案裡放一份說明,告訴別人發現漏洞要怎麼聯絡你。所有方案都能用
- 分支保護:規定主線不能直接改,一定要走 PR。免費方案只限公開專案,私有專案要 Pro 或 Team
- 公開改私有要注意:公開專案改成私有、又沒有付費加購,機密掃描、程式碼掃描這類進階資安功能會被關掉。Dependabot 不受影響
這些工具管不到的地方
- 只認得已知的問題:官方寫明警告抓不到所有資安問題,新的漏洞也要一段時間才會進資料庫
- 不懂你的業務邏輯:Dependabot 只比對套件。後台忘了檢查權限、誰都看得到別人的訂單,這類錯誤出在你自己的程式碼,它不會發現
- 私有專案的金鑰沒人掃:個人版推送保護只管推到公開專案的程式碼。免費方案的私有專案寫進金鑰,GitHub 不會擋,也不會警告
- 警告要有人處理:信寄來了,還是要有人點開,決定要修還是先關掉。固定一個時間處理,例如每週一次打開 Security and quality 分頁
一次設定好:照順序打勾
左邊兩欄,免費帳號的私有專案也做得到。右邊那一欄只限公開專案。
常見問題
Dependabot 要錢嗎?
不用。官方文件寫明 Dependabot 的警告、安全更新、版本更新,GitHub 上所有專案都能用,私有專案、免費帳號也一樣。它跑在 GitHub Actions 上,但用標準機器跑不會扣你的 Actions 免費分鐘數。
私有專案在免費方案能開哪些資安功能?
Dependabot 這一組:相依關係圖、漏洞警告、惡意套件警告、安全更新、版本更新。帳號的兩步驟驗證與安全政策檔也能用。機密掃描、推送保護、程式碼掃描在免費方案只限公開專案,分支保護則要 Pro 或 Team。
開了 Dependabot,別人會看到我的漏洞嗎?
GitHub 官方寫明,不會公開揭露任何 repo 的漏洞。新警告的通知,預設只寄給對專案有寫入以上權限、而且有關注這個專案的人。
一打開就跳出幾十則警告,正常嗎?
專案放久了,累積下來的已知漏洞會在第一次打開時一起被找出來。先處理 Critical 與 High、沒有 Development 標籤的那幾則。同一個套件常常對到好幾則警告,升級一次就能一起解決。
Dependabot 開的 PR 可以直接合併嗎?
建議先看過再合。它負責把版本升上去,不保證升級後網站一切正常。先確認自動檢查都通過、預覽網址的主要頁面正常,再合併。看不懂的話,可以把 PR 內容貼給 AI,請它說明影響範圍。
安全更新跟版本更新差在哪?
安全更新只在套件有已知漏洞、而且有修補版本時才開 PR,升到含修補的最低版本。版本更新不管有沒有漏洞,依你設定的頻率把套件升到新版,要放 .github/dependabot.yml 才會啟動。
警告沒有修補版本怎麼辦?
代表還沒有修好的版本可以升。如果有 Development 標籤,只在開發時用到,官方建議的處理順序本來就排在後面,可以選原因先關掉,之後再回來看。如果是網站上線會用到的套件,就考慮換一個替代套件。
公開專案改成私有,資安功能會怎樣?
沒有付費加購的話,機密掃描、程式碼掃描這類進階資安功能會被關掉。Dependabot 不受影響,私有專案本來就能用。
GitHub 一定要開兩步驟驗證嗎?
GitHub 從 2023 年 3 月起,分批要求在 GitHub 上貢獻程式碼的使用者開啟,收到通知的人沒在期限內設定,會無法使用 GitHub。沒收到通知的人不強制,但官方強烈建議開。
資料來源
每一筆都實際打開確認過。日期是該來源標示的發布日,這類規格會變動, 需要最新狀況請直接看原始出處。
- 01Dependabot alertsGitHub Docs 官方文件·2026-10-22官方一手
Dependabot 比對 GitHub Advisory Database、新增公告或相依關係圖變動時掃描預設分支、警告內容、預設通知對象、第一次啟用不會全部發通知、警告抓不到所有問題、GitHub 不公開揭露任何 repo 的漏洞。頁面未標日期,日期為本文查證當日。
- 02Configuring Dependabot alertsGitHub Docs 官方文件·2026-10-22官方一手
只有經過 GitHub 審核的漏洞公告會觸發警告,以及設定頁的開啟路徑。日期為本文查證當日。
- 03Dependabot malware alertsGitHub Docs 官方文件·2026-10-22官方一手
惡意套件警告的觸發時機、警告放在 Security and quality 分頁,以及支援的 8 種套件生態系。日期為本文查證當日。
- 04Dependabot alerts on malicious packages across more ecosystemsGitHub Changelog·2026-07-28官方一手
惡意套件警告從 npm 擴大到更多生態系,以及要到設定頁手動打開 Malware alerts。
- 05Dependabot security updatesGitHub Docs 官方文件·2026-10-22官方一手
所有 repo 都能用、升到含修補的最低版本、PR 合併後警告關閉、修不動時在警告上回報錯誤、npm 以外的間接相依限制、維護者長期不處理會暫停。日期為本文查證當日。
- 06Dependabot options referenceGitHub Docs 官方文件·2026-10-22官方一手
dependabot.yml 的必要欄位與 groups 寫法、版本更新 PR 同時上限 5 個、安全更新 PR 固定上限 10 個、版本更新預設等 3 天。日期為本文查證當日。
- 07Dependabot version updates introduce default package cooldownGitHub Changelog·2026-07-14官方一手
版本更新預設等 3 天的規則從 2026 年 7 月開始,且不影響安全更新。
- 08Dependabot version updatesGitHub Docs 官方文件·2026-10-22官方一手
所有 repo 都能用、要放 dependabot.yml 才會啟動。日期為本文查證當日。
- 09Dependency graph supported package ecosystemsGitHub Docs 官方文件·2026-10-22官方一手
npm 建議用 package-lock.json,lock 檔讓 Dependabot 查得到直接與間接相依的漏洞。日期為本文查證當日。
- 10
- 11Viewing and updating Dependabot alertsGitHub Docs 官方文件·2026-10-22官方一手
警告的位置、Most important 預設排序的依據、Development 標籤,以及官方建議先處理正式環境用到的套件。日期為本文查證當日。
- 12Configuring notifications for Dependabot alertsGitHub Docs 官方文件·2026-10-22官方一手
發現 critical 或 high 等級的新漏洞時寄 Email 與站內通知。日期為本文查證當日。
- 13About Dependabot on GitHub Actions runnersGitHub Docs 官方文件·2026-10-22官方一手
Dependabot 用標準機器或自架機器跑,不扣 Actions 內含的免費分鐘數。日期為本文查證當日。
- 14About GitHub Advanced SecurityGitHub Docs 官方文件·2026-10-22官方一手
各功能在公開專案與私有專案能不能用的對照,以及 Secret Protection、Code Security 只有 Team 與 Enterprise 能加購。本文第一張表依此整理。日期為本文查證當日。
- 15GitHub Advanced Security license billingGitHub Docs 官方文件·2026-10-22官方一手
所有公開專案都能用程式碼掃描與機密掃描,以及公開專案改私有又沒付費時功能會被關掉。日期為本文查證當日。
- 16GitHub security featuresGitHub Docs 官方文件·2026-10-22官方一手
安全政策檔、Dependabot 等列在「所有方案都能用」的功能,以及平常保持新版能讓安全更新更容易成功。日期為本文查證當日。
- 17
- 18Push protectionGitHub Docs 官方文件·2026-10-22官方一手
個人版推送保護預設開啟、只管推到公開專案、不看專案本身有沒有開機密掃描,以及專案版可由有寫入權限的人選原因略過。日期為本文查證當日。
- 19Resolving alerts from secret scanningGitHub Docs 官方文件·2026-10-22官方一手
金鑰一旦提交就當作已外洩、立刻輪替,以及撤銷後從 Git 歷史刪除通常沒必要。日期為本文查證當日。
- 20Secret scanning adds detectors for Lovable, Supabase, and moreGitHub Changelog·2026-10-05官方一手
新增 Lovable、Supabase 等服務的金鑰偵測。
- 21Secret scanning blocks Anthropic keys by default, adds SalesforceGitHub Changelog·2026-10-13官方一手
Anthropic 新型 API 金鑰改成推送保護預設就擋。
- 22Code scanning setup typesGitHub Docs 官方文件·2026-10-22官方一手
預設設定的掃描時機(含每週一次與 180 天條件)與支援的語言。開啟路徑取自同系列的設定說明頁。日期為本文查證當日。
- 23Copilot Autofix for code scanningGitHub Docs 官方文件·2026-10-22官方一手
Copilot Autofix 在使用 CodeQL 的專案預設開啟,以及公開專案都能用。日期為本文查證當日。
- 24Security and quality AI featuresGitHub Docs 官方文件·2026-10-22官方一手
Copilot Autofix 不需要 Copilot 訂閱。日期為本文查證當日。
- 25
- 26
- 27About two-factor authenticationGitHub Docs 官方文件·2026-10-22官方一手
官方建議 TOTP 驗證器 App 當主要方式、通行金鑰或安全金鑰當備用,簡訊可能被攔截,以及憑證遺失時客服無法恢復帳號。日期為本文查證當日。
- 28About mandatory two-factor authenticationGitHub Docs 官方文件·2026-10-22官方一手
2023 年 3 月起分批要求貢獻程式碼的使用者開啟 2FA、逾期無法使用 GitHub、沒收到通知者官方強烈建議開啟。日期為本文查證當日。
- 29Managing your personal access tokensGitHub Docs 官方文件·2026-10-22官方一手
官方建議優先用 fine-grained 權杖,classic 權杖能存取你看得到的每一個專案。日期為本文查證當日。
- 30