前段時間由於工做緣由須要對java源代碼進行掃描,現結合使用經驗對靜態代碼掃描工具Fortify SCA與FindBugs進行一個簡單的對比。html
1、Fortify SCA
Fortify SCA是由全球領先的軟件安全產品解決方案供應商Fortify Software開發,致力於幫助客戶在軟件開發生命週期中創建安全機制,杜絕軟件安全漏洞,避免經濟上和聲譽上的損失。前端
掃描原理:FortifySCA首先經過調用語言的編譯器或者解釋器把前端的語言代碼(Java、C、C++等源代碼)轉換成一種中間媒體文件NST(Normal Syntax Trcc),將其源代碼之間的調用關係、執行環境、上下文等分析清楚。而後經過匹配全部規則庫中的漏洞,若發現存在漏洞就抓取出來,顯示在Fortify SCA掃描結果中。java
風險類型:參考CWE、OWASP安全
是否收費:收費多線程
支持語言:Java,JSP,C#,C,C++,PHP,VB.NET,ASP.NET,COBOL,ColdFusion,Transact-SQL,PL/SQL,JavaScript/Ajax,Classic,ASP,VBScript,VB6工具
支持系統:Windows、Linux、Mac OS性能
安裝方式:IDE插件(Eclipse、VS、WSAD、RAD)、命令行spa
分析頁面:插件
報告格式:PDF命令行
2、FindBugs
FindBugs是由馬里蘭大學提供的一款開源靜態代碼分析軟件。
掃描原理:Findbugs檢查類或者JAR 文件,將字節碼與一組缺陷模式進行對比以發現可能的問題。Findbugs自帶檢測器,其中有60餘種Bad practice,80餘種Correctness,1種 Internationalization,12種Malicious code vulnerability,27種Multithreaded correctness,23種Performance,43種Dodgy。咱們還能夠本身配置檢查規則(作哪些檢查,不作哪些檢查),也能夠本身來實現獨有的校驗規則(用戶自定義特定的bug模式須要繼承它的接口,編寫本身的校驗類,屬於高級技巧)。
風險類型:
·Bad practice 常見代碼錯誤,用於靜態代碼檢查時進行缺陷模式匹配
·Correctness 可能致使錯誤的代碼,如空指針引用等
·Dodgy code 糟糕的代碼
·Experimental 實驗
·Internationalization 國際化相關問題
·Malicious code vulnerility 惡意的代碼漏洞
·Multithreaded correctness 多線程問題
·Performance 性能問題
是否收費:免費
支持語言:Java
使用方式:IDE插件(Eclipse、NetBeans、Intellij IEDA)、GUI
支持系統:Windows、Linux
分析頁面:
報告格式:XML
使用Fortify SCA與FindBugs掃描同一份源代碼結果差別較大。兩個工具所針對的威脅類型(可參見上文風險類型項)不一樣,可結合起來使用,有助於更多地發現源代碼問題。
原文出處:https://www.cnblogs.com/canyezhizi/p/10980851.html