iT邦幫忙

2026 iThome 鐵人賽

DAY 7
2

💡 今日學習目標:打破商業檢測工具高昂門檻的迷思,認識免費的 SonarQube 家族,並且誠實搞清楚免費版的能力邊界到底畫在哪裡


📌 前言:錢能解決的問題都不是問題,問題就是沒錢!

在資安業界,提起「原始碼靜態檢測(SAST)」,大家耳熟能詳的往往是知名大廠的商業解決方案:

  • Checkmarx
  • Fortify (OpenText)
  • HCL AppScan

這些商業工具功能強大、報告精美、支援各種罕見語法,但是價格極為昂貴。對於大型企業來說,一年花費數十萬甚至數百萬元買使用授權是常態;但對於中小型企業、新創團隊、個人開發者或學生來說,這無疑是一道高不可攀的壁壘。

難道沒預算就不能做資安檢測了嗎?

「錢能解決的問題都不是問題,問題就是沒錢!」

好消息是:開源與免費的世界,早已為我們準備好了一整套工具組合。

不過在正式介紹之前,得先解決一個會讓你搜尋時一頭霧水的問題:它們改名了


📛 先解決名字問題:Sonar 家族在 2024 年全面改名

如果你 Google「SonarLint」,或是在 VS Code 市集裡搜尋這個名字,你會發現找到的東西掛著別的名稱。這不是你記錯了。Sonar 官方在 2024 年 10 月把整個產品線改名,全部收攏到 SonarQube 這個品牌底下

舊名稱(你在網路文章上會看到的) 現在的正式名稱
SonarLint SonarQube for IDE
SonarQube(自架版) SonarQube Server
SonarQube Community Edition SonarQube Community Build
SonarCloud SonarQube Cloud

網路上絕大多數教學仍在使用舊名稱,所以本系列會在第一次出現時同時標註新舊兩個名字,方便你交叉查資料。


🔍 核心工具介紹:Sonar 家族的兩道防線

Sonar 家族是目前全球最受歡迎的程式碼品質與資安檢測工具之一,它的靈魂哲學是:Clean Code & Secure Code at Every Step

我們會用到的是其中兩個,分工如下:

SonarQube for IDE(原 SonarLint) SonarQube Community Build(原 Community Edition)
裝在哪 你的編輯器VS Code、JetBrains、Visual Studio、Eclipse 自己的機器或伺服器Docker 一行指令啟動
什麼時候跑 邊打字邊掃,毫秒回饋 提交前或 CI 觸發,整包專案掃描
給誰用 開發者個人 整個團隊共用的儀表板
提供什麼 即時紅線警告與修復建議 評分報告、品質閘門(Quality Gates)、CI/CD 整合
費用 完全免費 社群版免費(LGPLv3 開源授權)

1. 第一防線:SonarQube for IDE(原 SonarLint)

  • 定位:像拼字檢查器(Spell Checker)一樣的 IDE 外掛套件。
  • 優點:免費、離線可用、不用架伺服器。當你在編輯器裡寫下不安全的程式碼,它就會當場劃線警告,並附上為什麼危險與怎麼改。

2. 第二防線:SonarQube Community Build(原 Community Edition)

  • 定位:可自架(Self-Hosted)的集中式程式碼品質與資安檢測 Web 平台。
  • 優點:社群版完全免費開源,支援 Java、C#、Python、JavaScript、TypeScript、PHP、Go 等主流語言。
  • 核心價值:提供儀表板、品質閘門門檻設定,並可無縫整合進 GitHub Actions / GitLab CI。

⚖️ 但筆者必須先說清楚:免費版的邊界在哪裡

這裡要停下來講一件多數工具介紹文不會告訴你的事。

昨天 Day 06,我們花了整整一篇在講 SAST 的核心機制污點分析(Taint Analysis):追蹤一筆外部資料從污點源流到危險匯點的全程。

然後今天筆者得誠實告訴你:SonarQube 的社群版,剛好就沒有這個功能。

零預算 SAST 的真實邊界:免費版抓得到什麼、抓不到什麼、以及怎麼免費補位

跨檔案的資料流追蹤(也就是抓 SQL Injection、XSS、Command Injection 這類注入漏洞的關鍵能力),要從 Developer Edition 起才有,而那是付費的。

那社群版還值得用嗎?非常值得。 因為它免費就抓得到的那些東西,恰恰是新手最常犯、也最容易致命的:

  • 一時偷懶寫進程式碼裡的 API 金鑰與資料庫密碼
  • 沿用了十年的 MD5 密碼雜湊
  • Math.random() 去產生密碼重設 Token
  • 一整排沒人複核過的敏感用法告警(弱雜湊、不安全的亂數來源、可疑的檔案操作)

而如果你真的需要注入類漏洞的偵測,也有免費的補位方案:Semgrep Community Edition(免費開源,內建 taint mode,但限單檔範圍)與 CodeQL(跨檔案污點分析完整,公開儲存庫免費)。

🛡️ 為什麼要特別講這一段?
因為資安最危險的狀態,從來不是「知道自己有漏洞」,而是 「以為自己沒有漏洞」
如果你以為社群版掃過就等於免疫注入攻擊,那這個工具不但沒幫到你,還親手給了你一份錯誤的安心。


💡 商業工具 vs. 開源方案對比通則

評比項目 商業 SAST(Checkmarx / Fortify) 零預算方案(SonarQube 家族 + Semgrep CE)
建置成本 昂貴(數十萬 ~ 數百萬 NTD/年) 零元($0),自備本機或伺服器
導入難易度 需要專人維運、顧問設定 極低,Docker 一行指令、IDE 外掛點一下
即時性 多為整包掃描,需數十分鐘 極高,IDE 端邊寫邊掃、毫秒回饋
樣式類規則硬編碼機密、弱加密 完整 完整,這部分免費版沒有短少
跨檔案污點分析SQLi / XSS / 注入類 完整且深入 ⚠️ 需付費版;免費可用 Semgrep CE(單檔)或 CodeQL(公開儲存庫)補位
合規報表 深度合規與稽核報表 陽春,需自行整理

看得出來,零預算方案不是「打七折的商業工具」,而是在不同的地方各有強弱。它在「即時性」和「導入門檻」上甚至勝過商業工具,但在跨檔案的深度分析上確實有缺口。


🛠️ 資安新手的零預算組合拳策略

這就是我們接下來要建立的零成本防守策略

  1. 開發階段:在編輯器安裝 SonarQube for IDE,讓它成為你個人的隨身資安導師。(Day 08 動手做)
  2. 提交前:用 Docker 跑一套 SonarQube Community Build,做整包專案的完整檢查,並讀懂 A ~ E 級評分。(Day 09 - 11 動手做)
  3. 自動化:把掃描串進 GitHub Actions,讓每一次 Commit 與 PR 自動過一次安全門禁。(Day 28 動手做)
  4. 補上注入類缺口(進階選配):如果專案有處理外部輸入的 SQL、指令或樣板渲染,再加掛 Semgrep CE;如果專案本身是公開儲存庫,直接開 GitHub 內建的 CodeQL 掃描,兩者都免費。

前三步是本系列會手把手帶你做完的主線。第四步不是必要,但當你的系統開始接觸真實的使用者輸入時,它就會從「加分項」變成「該做的事」。

一毛錢都不用花,你就能擁有一條涵蓋 IDE、提交、CI/CD 三個關卡的防線,而這在十年前是只有大企業才買得起的東西。


🎯 今日重點小結與防守心法

  • 🔹 心法 1:沒錢也有沒錢的做法。不要把「沒預算」當成不重視資安的藉口。免費工具能擋掉的,正好是最常見也最致命的那幾類問題。
  • 🔹 心法 2:雙防線策略。SonarQube for IDE 當前鋒即時提示,自架的 SonarQube Community Build 當後衛集中把關。
  • 🔹 心法 3:搞清楚工具的邊界,比崇拜工具更重要。免費版沒有跨檔案污點分析,所以「掃過全綠」不等於「沒有注入漏洞」。知道界線在哪,工具才是神隊友。

💬 明日預告:【Day 08】【動手做】在 IDE 裝上第一道防護網:SonarQube for IDE 安裝與即時掃描示範
明天我們將進入第一個【動手做】單元,手把手帶你在編輯器裡裝上第一道防線!


上一篇
【Day 06】「檢查」第一步:什麼是 Code Review 與靜態程式碼檢測 (SAST)?
下一篇
【Day 08】【動手做】在 IDE 裝上第一道防護網:SonarQube for IDE 安裝與即時掃描示範
系列文
槍林彈雨下的資安防守:從品質觀念切入,帶開發者從零動手作資安 30 天10
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

1
AndyAWD
iT邦新手 1 級 ‧ 2026-08-26 20:39:52

SonarQube 真是又愛又恨,有時抓出來的東西很煩 XD

rosschen iT邦新手 4 級 ‧ 2026-08-26 21:45:33 檢舉

多修幾次,就知道怎麼 規避 寫好 /images/emoticon/emoticon39.gif

我要留言

立即登入留言