上一篇文章 輕鬆了解網站安全10大風險 | 開放網路軟體安全計畫 | OWASP TOP 10,提到了系統上線,程式碼需要做系統安全弱點掃描,並要確保系統沒有 OWASP TOP 10 中的問題,才能保證系統的安全性。
程式碼的安全性檢查當然部會由人工進行檢查,那是會死人的,有多少規則,多少行程式碼,能稱之為系統的程式碼一定不下數萬行。
因此就有許多的大神將它寫成程式工具啦~不但方便繼承前人的智慧,也方便大伙們使用啦~
在此就要介紹本人使用的工具(SonarQube),並做簡單的使用說明,以及如何閱讀錯誤並修正錯誤。還有還有會教大家如何產出檢測結果的報表,非常方便交報告喔!!
一條龍的服務現在開始~~
SonarQube 是一套開源的原碼檢測與品質管理系統,是由 Java 語言所開發的,因此是支援跨平台服務的,並且是供大眾免費使用的。
可檢測的語言非常多有 Java、C#、JavaScript、TypeScript、PHP、Python、VB.NET、Flex、HTML、Kotlin、Ruby、Scala、Go、CSS、XML、JSP...等語言,未在上述提及的部分需而外加購。
可以支援團隊協作,多人一起維護專案。(本章部會提及,之後另有文章說明)
支援安裝外掛套件。(產出檢測結果的報表,就是使用外掛套件)
支援中文介面。(也是使用外掛套件,身為英文不好的工程師非常好用)
SonarQube 目前已經到第9版了,但是比較新的版本某些套件可能來不及更新支援到第9版,因此我這邊會以第8版為主。
下載 JAVA,SonarQube 8.9.10 LTS 需要以 JAVA 11 執行,這邊我就使用 openjdk 11 。
安裝的方式也是非常簡單,只需要將下載下來的 sonarqube-8.9.10.zip 安裝檔案,解壓縮至你想要的路徑即可,例如 D 槽。
再來就是設定環境變數,新增一個變數 JAVA_HOME,值為你安裝 JAVA 11 的路徑,設定完成後就結束了 JAVA 的安裝。
這邊我們使用 Community Edition (社區版) 即可,此版免費使用。
比方說需要檢測 C、C++、Obj-C、Swift、ABAP、T-SQL、PL/SQL 以上 語言所撰寫的程式,就需要下載 Developer Edition (開發版)。
安裝的方式也是非常簡單,只需要將下載下來的 sonarqube-8.9.10.zip 安裝檔案,解壓縮至你想要的路徑即可,例如 D 槽。
管理者帳號為 admin,預設密碼 admin。(登入後請記得變更)
工具列上找到 Administration (配置) 點選後,在點選 Marketplace (應用市場),輸入 Traditional Chinese Language Pack,按下安裝。
工具列上找到 Administration (配置) 點選後,在點選 Marketplace (應用市場),輸入 SonarQube CNES Report,按下安裝。
接下來就依著重新啟動的指示,將重新啟動 SonarQube,再來看看套件安裝成果啦~
SonarQube 中文化套件 (Traditional Chinese Language Pack) 安裝成功後,登入畫面就是以中文呈現啦~
這樣大家使用起來因該就減少不少壓力了吧!!
容易使用也方便大家學習囉😁
SonarQube 報表套件 (SonarQube CNES Report) 安裝成功後,功能列會多出一的更多的選項,裡面就有一個 CNES Report 的功能。
報表可以產出4中格式的檔案 DOCX、MD、XLSX、CSV。
其中 DOCX、MD 檔案是檢測結果的主要內容 (如:評分等級)。
而 XLSX、CSV 檔案是檢測結果的明細內容 (如:各項程式碼問題點)。
SonarScanner (客戶端),一樣需要以 JAVA 11 執行,那就請大家參考「安裝及設定 SonarQube (伺服端)」中的安裝 openjdk 11的步驟囉~
下載 SonarScanner,使用這包工具提交檢測的程式碼給伺服端,所以所以一定要安裝喔!!
安裝一樣只要解壓縮安裝檔,到你喜歡的路徑中就可以啦~
接下來要做一些小小的設定,才可以掃描程式,在你安裝的 SonarScanner 路徑中找到 conf 資料夾,開啟 sonar-scanner.properties 文件。
分別設定以下三個參數
sonar.sourceEncoding (使用的編碼最好使用 UTF-8 比較不會遇到問題)
sonar.projectVersion (設定初始版號)
sonar.java.binaries
(這個非常重要一定要設定,不然會無法進行檢測,這邊要設定 java 編譯檔路徑,避免專案中的編譯檔被掃描而發生錯誤)
下載 NodeJs,如果您不需要檢測 JavaScript、TypeScript、CSS 語言的話,NodeJs 就不需要下載安裝了,反過來說就是必須要使用 NodeJs 才可以針對JavaScript、TypeScript、CSS 這三種語言進行檢測,沒有使用的話是不會有這三種語言的檢測結果的。
還是解壓縮安裝檔,到你喜歡的路徑中就對了
再來設定環境變數就可以完成全部的安裝囉~