静态扫描操作手册
前言
静态源代码扫描是近年被人提及较多的软件应用安全解决方案之一。它是指在软件工程中,程序员在写好源代码后,无需经过编译器编译,而直接使用一些扫描工具对其进行扫描,找出代码当中存在的一些语义缺陷、安全漏洞的解决方案。目前的静态扫描技术已经从90年代时候的,编码规则匹配这种由编译技术拓展过来的分析技术向程序模拟全路径执行的方向发展,由此,这种模拟执行相对的执行路径比动态执行更多,能够发现很多动态测试难以发现的缺陷。
目前工作中,我们主要面对的可分为两类:eclipse开发代码,studio开发代码,针对这两种工具开发的代码我们分别运用eclipse及studio安装各自的fingbugs插件,再进行代码静态扫描,并对问题进行分析。
工具
主工具:Eclipse、Android Studio;
其他辅助插件:findbugs插件、maven插件、Jdk;
三、环境准备
安装JDK
安装JDK
双击exe文件进入安装向导界面,点击“下一步”。
进入JDK安装设置界面,是否需要更改路径由安装者而定。点击“下一步”。
进入JDK安装设置界面,是否需要更改路径由安装者而定。点击“下一步”。
等待Java安装完毕,回到JDK安装界面提示“已安装成功”,点击“关闭”。
如何配置java环境变量?
Java环境变量配置分“相对路径”和“绝对路径”两种方式。
若未配置java环境变量,在window命令提示符输入java或javac,将会提示不是内部或外部命令,也不是可运行的程序。
a. 使用相对路径方式配置Java环境变量:
新建系统变量JAVA_HOME,变量值为JDK安装路径,如:
D:\Program Files (x86)\Java\jdk1.8.0_25;
配置路径为“我的电脑→属性→高级系统设置→高级→环境变量→系统变量→新建→填写变量名JAVA_HOME,变量值JDK安装路→确定”。
再新建系统变量CLASSPATH;
变量值为:“.\;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar”或只填“.\“。
注:点号表示当前目录,分号用于隔开路径与路径。
在系统变量Path变量值中添加JDK安装路径下的bin目录。
变量值:“;%JAVA_HOME%\bin”;
b. 使用绝对路径方式配置java环境变量。
新增系统变量CLASSPATH,变量值为:
“.\;D:\Program Files (x86)\Java\jdk1.8.0_25\lib\dt.jar;D:\Program Files (x86)\lib\tools.jar”或“.\”
系统变量Path所需添加变量值为:
“;D:\Program Files (x86)\Java\jdk1.8.0_25\bin”;
安装maven插件及eclipse配置maven
下载maven的bin,在apache官方网站可以下载。
下载下来之后,解压,找个路径放进去,把bin的位置设在环境变量里,新建环境变量MAVEN_HOME
在PATH里加入maven的bin的路径
由于Maven依赖Java运行环境,因此使用Maven之前需要配置Java的运行环境。下载并安装JDK,配置JDK的环境变量JAVA_HOME,否则maven将无法使用;
配置完毕后,在Windows命令提示符下,输入mvn -v测试一下,配置成功显示如图:
配置成功后开始在Eclipse中配置Maven,点击eclipse菜单栏Help->Eclipse Marketplace搜索关键字maven到插件Maven
Integration for Eclipse 并点击安装即可,如下图:
安装完毕后,点击重启eclipse;
重启后,为了使得Eclipse中安装的Maven插件,同windows中安装的那个相同,需要让eclipse中的maven重新定位一下,点击Window -> Preference -> Maven -> Installation -> Add进行设置:
设置成功即安装完成。
安装fingbugs插件
Eclipse安装fingbugs:
点击“Help->InstallNew Software”,如下图:
点击“Add”,然后在弹出框“Name”输入“findBugs”,“Location”输入“http://findbugs.cs.umd.edu/eclipse”,点击“OK”,如下图:
选择对应插件,然后点击“next->next->finish”。
完成安装之后重启eclipse,右击项目文件或目录,会发现多了Findbugs的菜单,如下图:
Android Studio安装fingbugs:
在线安装,首先打开Android studio的设置中的插件,输入findbugs,如下图所示,点击Browse查找
结果如下图所示,选择第一个安装,如下图:
安装完毕之后重启Android studio,然后你就能看到一个愤怒的小鸟图标,恭喜你,完成安装,接下来就能进行使用了;
四、测试执行
工程导入
eclipse中导入工程步骤:
将工程包下载到本地
FileàimportàMaven(existing Maven projects)
(根据具体的开发工程进行选择,可咨询开发)
Android Studio中导入工程步骤:
将工程包下载到本地
Fileànewàimport projects
代码扫描
选择对应的扫描规则及颗粒度(eclipse,Android无)
右击工程名,选择propertiesàfindbugs
选择对应的扫描的工程名右击,点击findbugs按钮,直至扫描完成
Eclipse:
可能遇到的问题:遇到找不到findbugs按钮
定位:工程导入有问题
解决方法:重新导入,删除eclipse工程并保留本地文件,再次导入(再不行就求助对应项目的开发)
Android Studio:
问题分析
Eclipse:
Android Studio:
根据问题代码的规则名称,在fingbugs扫描规则问题分析手册中查找具体分析。
问题分析请结合具体问题代码分析,且在实际项目扫描过程中可能会遇到一些问题不在扫描规则文档(见附录)里面,进行百度搜索或根据问题描述及问题代码自行分析。
问题记录格式如下:
注:如遇到不在文档中且对项目比较有影响的问题请根据规则问题分析表中格式规则记录维护到分析表中。
五、附录
1、Findbugs插件安装教程参考:
参考:http://blog.csdn.net/gaofuqi/article/details/22679609
参考:http://blog.csdn.net/atangsir/article/details/50731550
2、findbugs扫描规则问题分析.docx
3、静态扫描测试报告