代码审计[Sonar规则开发]

一.背景和目的

 

随着新时代、新业务、新技术的快速发展,应用软件安全缺陷层出不穷。虽然一般情况下,开发者基本都会有单元测试、每日构建、功能测试等环节来保证应用的可用性; 但在代码质量、可维护性、安全等方面,缺乏意识,最终导致安全缺陷,代码逻辑混乱,不可维护等问题的出现。

目的:在开发中提高安全,减少安全隐患,减少人力【如何高效开发,并提高代码安全和质量,保持持续交付

策略:1.使用开源【sonarqube,cobra】 2.自建  3.购买【converity,fortify等

周期:3周

综合以上问题和时间等因素,本次主要根据,从代码检测工具方面来做介绍,并做出以下两种方案:

方案1:svn + maven + jenkins + sonarqube

优点:全自动化、可自由接入,可自定义规则,可自定义规则,代码提交到svn自动代码安全检测

方案2:  git + maven + jenkins + sonarqube

优点:可自由接入,可自定义规则,可自定义规则,新的代码项目提交到git,需要配置后才能自动代码安全检测

 

1.SonarQube简单介绍

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.SonarQube安装及部署

2.0  在安装sonarqube时,必须先安装jdk,并配置了环境变量
2.1  下载SonarQube https://www.sonarqube.org/downloads/
2.2 解压并放置在任意文件夹下
2.3进行bin目录,然后选择win*****与电脑相应的文件夹,点击StartSonar.bat启动启动后,若出现一下界面则表示成功
代码审计[Sonar规则开发]_第1张图片

若没有,则表示启动失败;进入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文件进行更改端口的设置
代码审计[Sonar规则开发]_第2张图片

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,已经汉化问中文了

代码审计[Sonar规则开发]_第3张图片

 

 

配置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.sonar扫描项目

3.1 Eclipse集成sonar
第一步:安装sonar插件,打开Help > Install New Software… ,输入下面这个网址 (http://downloads.sonarsource.com/eclipse/eclipse/),接下来就会显示下面这个界面内容 
代码审计[Sonar规则开发]_第4张图片

然后点击next安装就OK了,完成安装之后会提示你重新启动。
第二步:Eclipse上运行sonar,Eclipse执行maven命令:sonar:sonar:

 

代码审计[Sonar规则开发]_第5张图片

 

代码审计[Sonar规则开发]_第6张图片

再去locahost:9000下面查看,已经ok:
代码审计[Sonar规则开发]_第7张图片

如果我们想直接在Eclipse中查看sonar问题,我们点击工程右键,如下图:

代码审计[Sonar规则开发]_第8张图片

然后再次右击工程,进行解析,如下图:

代码审计[Sonar规则开发]_第9张图片

分析结果:

代码审计[Sonar规则开发]_第10张图片

3.2 不使用IDE集成,直接使用扫描端

 

下载扫描器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就可以看到结果了

你可能感兴趣的:(Develop)