前段时间由于工做缘由须要对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