安全从0到1的苦逼过程--SDLC[sonarQube-1]

原创 2018年04月16日 17:53:50

一.背景和目的

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

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

策略: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启动启动后,若出现一下界面则表示成功


若没有,则表示启动失败;进入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.sonar扫描项目

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问题,我们点击工程右键,如下图:

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


分析结果:



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里添加
<pluginGroups>
	<pluginGroup>org.sonarsource.scanner.maven</pluginGroup>
</pluginGroups>


<profile>
    <id>sonar</id>
    <activation>
        <activeByDefault>true</activeByDefault>
    </activation>
    <properties>
        <!-- Optional URL to server. Default value is http://localhost:9000 -->
        <sonar.jdbc.url>
    jdbc:mysql://localhost:3306/sonar?useUnicode=trueamp;characterEncoding=utf8
        </sonar.jdbc.url>
        <sonar.jdbc.driver>com.mysql.jdbc.Driver</sonar.jdbc.driver>
        <sonar.jdbc.username>sonar</sonar.jdbc.username>
        <sonar.jdbc.password>sonar</sonar.jdbc.password>
        <sonar.host.url>
          http://localhost:9000
        </sonar.host.url>
    </properties>
</profile>

eclipse里,项目右击,选择run as-maven build. maven build里goals为sonar:sonar


方式一或者二执行完之后,刷新http://localhost:9000/dashboard就可以看到结果了

安全从0到1的苦逼过程--SDLC[sonarQube-4-自定义规则配置]

1.安装mvn编译环境:http://mirror.bit.edu.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.zip#...
  • qq_39325340
  • qq_39325340
  • 2018-04-21 16:25:55
  • 1

安全从0到1的苦逼过程--SDLC[sonarQube-2-简单配置]

安全设置1.启用用户安全认证规则加载第三方规则:1.下载FindBugs的插件包,放在sonarqube的extensions--&amp;gt;plugins目录下:2.重启服务默认就把FindBu...
  • qq_39325340
  • qq_39325340
  • 2018-04-17 14:45:52
  • 8

安全从0到1的苦逼过程--SDLC[sonarQube+git+jenkins-3-简单配置]

1.工具命令和jdk安装yum updateyum install wget,vim,unzip -ytar zxvf jdk-8u171-linux-x64.tar.gz添加环境变量配置,命令如下:...
  • qq_39325340
  • qq_39325340
  • 2018-04-21 13:26:21
  • 3

安全从0到1的苦逼过程--SDLC[扫描器设计]

1.需求2.目标3.选择策略4.设计工作流程图层级结构图
  • qq_39325340
  • qq_39325340
  • 2018-04-16 15:52:48
  • 0

搞IT的技术人员为什么会如此苦逼

今天同事发给我一个链接让我看看,看完之后猛的一身冷汗,我刚毕业,工作一般,属于懒散型。现在项目中的问题能对付就对付,得过且过。回想在学校中的学习阶段,每天七点起床到晚上12点睡觉,从白痴学习java到...
  • wangwuyilove
  • wangwuyilove
  • 2014-03-13 17:07:53
  • 1046

牛逼的人都是相似的,而苦逼的人则各有各的苦逼

兰州自来水污染事件再次将中国的“饮用水安全问题”中国的饮用水标准究竟如何?我们喝的水究竟是否安全?谁来保障我们的饮水安全?顺着这几年公众关于自来水的讨论,我们梳理中国的饮用水标准和监测水平,比一比中国...
  • u014429444
  • u014429444
  • 2014-04-30 08:28:51
  • 100

技术开发人员为什么会无奈苦逼?

技术开发人员为什么会无奈苦逼? 首先来谈谈为什么要有这篇文章,主要是最近一段时间的亲身经历后的所感。最近我们团队开始在全国范围内开始为很多的企业的项目进行性能调优。接触到了很多不同的人和事情,也看到...
  • lifang123456
  • lifang123456
  • 2015-09-25 10:47:01
  • 567

一个苦逼程序员日常的 10 个扎心瞬间

下面这些情况做程序员的你一定不会陌生!!!做程序员的我,日常就是1上班........下班做程序员的我,日常就是上班,晚上要加班,周末要加班,节假日还要加班,服务器崩溃要加班,服务器不崩溃也要写bug...
  • EGEFCXzo3Ha1x4
  • EGEFCXzo3Ha1x4
  • 2017-12-12 00:00:00
  • 3838

安全从0到1的苦逼过程--整体业务安全方案[1]

第1章       综述... 31.1      概述... 31.2      现状分析... 41.3      设计目标... 8第2章       信息安全总体规划... 102.1设计目标...
  • qq_39325340
  • qq_39325340
  • 2018-04-14 20:20:26
  • 18

80后的苦逼

当我们读小学的时候,读大学不要钱;  我们要读大学的时候,读小学不要钱;  我们还没能工作的时候,工作也是分配的;  我们可以工作的时候,撞得头破血流才勉强找份饿不死人的工作做; ...
  • benjmzhu
  • benjmzhu
  • 2011-12-01 00:01:05
  • 523
收藏助手
不良信息举报
您举报文章:安全从0到1的苦逼过程--SDLC[sonarQube-1]
举报原因:
原因补充:

(最多只允许输入30个字)