随着新时代、新业务、新技术的快速发展,应用软件安全缺陷层出不穷。虽然一般情况下,开发者基本都会有单元测试、每日构建、功能测试等环节来保证应用的可用性; 但在代码质量、可维护性、安全等方面,缺乏意识,最终导致安全缺陷,代码逻辑混乱,不可维护等问题的出现。
目的:在开发中提高安全,减少安全隐患,减少人力【如何高效开发,并提高代码安全和质量,保持持续交付
】
策略:1.使用开源【sonarqube,cobra】 2.自建 3.购买【converity,fortify等】
周期:3周
综合以上问题和时间等因素,本次主要根据,从代码检测工具方面来做介绍,并做出以下两种方案:
方案1:svn + maven + jenkins + sonarqube
优点:全自动化、可自由接入,可自定义规则,可自定义规则,代码提交到svn自动代码安全检测
方案2: git + maven + jenkins + sonarqube
优点:可自由接入,可自定义规则,可自定义规则,新的代码项目提交到git,需要配置后才能自动代码安全检测
SonarQube能够提供对代码的一整套检查扫描和分析功能,拥有一套服务器端程序,然后再通过客户端或者别的软件的插件的
式完成对各开发环境和软件的支持。
对编程语言的支持非常广泛,包括C、C++、Java、Objective C、Python、JavaScript、PHP、C#、Swift、Erlang、Groovy等众多语言
提供了对HTML、CSS、JSON、XML、CSV、SQL、JSP/JSF等类型的文档的支持
提供了以FindBugs、PMD、CheckStyle方式执行代码分析和测试检查的功能
登录认证方式支持LDAP、Bitbucket、Azure ActiveDirectory(AAD)、Crowd等方式
提供了优美的视图方式下查看代码分析和测试结果报告
网址:https://www.sonarqube.org/
环境需求:
1.确保windows系统已安装jdk8版本,这是sonarqube6.2的基本需求,安装完成后配置java环境变量,具体可以百度
2.去mysql官网下载mysql5.6及以上版本,这也是sonarqube6.2的需求
2.0 在安装sonarqube时,必须先安装jdk,并配置了环境变量
2.1 下载SonarQube https://www.sonarqube.org/downloads/
2.2 解压并放置在任意文件夹下
2.3进行bin目录,然后选择win*****与电脑相应的文件夹,点击StartSonar.bat启动启动后,若出现一下界面则表示成功
若没有,则表示启动失败;进入sonarqube-6.4\sonarqube-6.4\logs\查看weblog找到相应的错误并解决。
此时启动成功后,SonarQube默认使用的是内置的H2数据库,当然也可以进行自定义配置,在sonarqube-6.4\sonarqube-6.4\conf\下,打开sonar.properties文件
注意:
SonarQube server默认使用的是9000端口,如果目前9000端口已经占用,进行到sonarqube-6.4\sonarqube-6.4\conf\下,打开sonar.properties文件进行更改端口的设置
2.4 打开浏览器进入http://localhost:9000,将会显示一下界面
2.5 下载中文包插件,汉化网页链接:https://docs.sonarqube.org/display/PLUG/Plugin+Library;下载成功后,放在sonarqube-6.4\sonarqube-6.4\extensions\plugins文件夹下。
2.6 重新启动SonarQube
1、首先关闭SonarQube.bat窗口
2、再Ctrl+Shift+Esc调出windows资源管理器
3、在进程中关闭所有Java.exe进程
4、然后重新进入.\sonarqube-4.5.7\bin\windows-x86-32,运行StartSonar.bat文件
2.8 打开http://localhost:9000/projects,已经汉化问中文了
配置mysql:
第一步:使用命令创建数据库,名字为sonar:
CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;
第二步:创建一个sonar用户并把这个用户的密码设置为soanr:
CREATE USER 'sonar' IDENTIFIED BY 'sonar';
第三步:将第一步中创建的sonar数据库的所有权限赋给第三步中创建的sonar用户:
GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY 'sonar';
GRANT ALL ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY 'sonar';
FLUSH PRIVILEGES;
配置服务器:
sonar.jdbc.username=sonar
sonar.jdbc.password=sonar
#score.jdbc.driverClassName=com.mysql.jdbc.Driver
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance
sonar.search.host=
sonar.web.javaAdditionalOpts=
sonar.web.port=9000
sonar.web.http.maxThreads=50
sonar.web.http.minThreads=5
sonar.web.http.acceptCount=25
sonar.ce.workerCount=1
sonar.search.port=9001
sonar.search.host=127.0.0.1
3.1 Eclipse集成sonar
第一步:安装sonar插件,打开Help > Install New Software… ,输入下面这个网址 (http://downloads.sonarsource.com/eclipse/eclipse/),接下来就会显示下面这个界面内容
然后点击next安装就OK了,完成安装之后会提示你重新启动。
第二步:Eclipse上运行sonar,Eclipse执行maven命令:sonar:sonar:
再去locahost:9000下面查看,已经ok:
如果我们想直接在Eclipse中查看sonar问题,我们点击工程右键,如下图:
然后再次右击工程,进行解析,如下图:
分析结果:
下载扫描器sonar-scanner-cli: https://sonarsource.bintray.com/Distribution/sonar-scanner-cli/
3.1.1 方式一:cmd窗口执行
在项目的根目录下创建sonar-project.properties文件,内容为
sonar.host.url=http://localhost:9000
sonar.login=admin
sonar.password=admin
sonar.projectKey=com.chj.test
sonar.projectName=test
sonar.projectVersion=1.0
sonar.projectDescription="this is a test project"
#源码位置
sonar.sources=src
sonar.language=java
sonar.sourceEncoding=UTF-8
#编码class位置
sonar.java.binaries=src
#第三方插件包位置
sonar.java.libraries=src
然后切换到源码根目录,然后执行sonar-scanner.bat。
3.1.2 方式二:eclipse里执行
在maven的settings.xml里添加
org.sonarsource.scanner.maven
sonar
true
jdbc:mysql://localhost:3306/sonar?useUnicode=trueamp;characterEncoding=utf8
com.mysql.jdbc.Driver
sonar
sonar
http://localhost:9000
eclipse里,项目右击,选择run as-maven build. maven build里goals为sonar:sonar
方式一或者二执行完之后,刷新http://localhost:9000/dashboard就可以看到结果了