Gradle zap plugin

A gradle plugin that help you integrate ZAP Proxy into your CI server

License

License

Categories

Categories

Security
GroupId

GroupId

com.thoughtworks.tools
ArtifactId

ArtifactId

security-zap
Last Version

Last Version

1.0.5
Release Date

Release Date

Type

Type

jar
Description

Description

Gradle zap plugin
A gradle plugin that help you integrate ZAP Proxy into your CI server
Project URL

Project URL

https://github.com/wmaintw/security-zap
Source Code Management

Source Code Management

https://github.com/wmaintw/security-zap

Download security-zap

How to add to project

<!-- https://jarcasting.com/artifacts/com.thoughtworks.tools/security-zap/ -->
<dependency>
    <groupId>com.thoughtworks.tools</groupId>
    <artifactId>security-zap</artifactId>
    <version>1.0.5</version>
</dependency>
// https://jarcasting.com/artifacts/com.thoughtworks.tools/security-zap/
implementation 'com.thoughtworks.tools:security-zap:1.0.5'
// https://jarcasting.com/artifacts/com.thoughtworks.tools/security-zap/
implementation ("com.thoughtworks.tools:security-zap:1.0.5")
'com.thoughtworks.tools:security-zap:jar:1.0.5'
<dependency org="com.thoughtworks.tools" name="security-zap" rev="1.0.5">
  <artifact name="security-zap" type="jar" />
</dependency>
@Grapes(
@Grab(group='com.thoughtworks.tools', module='security-zap', version='1.0.5')
)
libraryDependencies += "com.thoughtworks.tools" % "security-zap" % "1.0.5"
[com.thoughtworks.tools/security-zap "1.0.5"]

Dependencies

compile (5)

Group / Artifact Type Version
org.apache.velocity : velocity jar 1.7
org.apache.velocity : velocity-tools jar 2.0
commons-io : commons-io jar 2.4
org.codehaus.groovy.modules.http-builder : http-builder jar 0.7.1
com.fasterxml.jackson.core : jackson-databind jar 2.5.1

Project Modules

There are no modules declared in this project.

Security ZAP Gradle Plugin

概述

security-zap快速安装、使用指南

要使用security-zap插件,只需要按照下面的指南一步一步进行配置就可以了,核心的步骤可以归纳为:

  • 安装OWASP ZAP Proxy
  • build.gradle文件中对security-zap插件进行配置
  • 运行security-zap提供的命令

Step 1, 下载安装ZAP Proxy

ZAP Proxy 是一款由OWASP开发的专门进行Web安全测试的软件,虽然它的名字里有Proxy这样的字眼,但是它的功能不仅仅只局限于代理,还可以进行各种基于HTTP的安全测试。ZAP Proxy 提供了GUI界面以及API接口,可以利用这两种方式中的任意一种对ZAP Proxy进行操作,而security-zap插件则是对ZAP Proxy API 接口的进一步封装,使得项目团队能够更加方便的使用它。

在进行下一步之前,请先下载并且安装OWASP ZAP Proxy

Step 2, 在build.gradle文件中配置security-zap插件

apply plugin: "security-zap"

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath(
                'com.thoughtworks.tools:security-zap:1.0.5'
        )
    }
}

引入了security-zap插件后,还需要在build.gradle里进行一些配置:

zap {
    server {
        // ZAP的安装目录(绝对路径),例如 /Users/wma/Downloads/security/zap-for-linux/ZAP_2.3.1
        home = "/absolute/path/to/ZAP/install/folder"
    }

    target {
        // 目标网站
        url = "http://localhost:8080/WebGoat"
    }
}
test {
    systemProperty 'zap.proxy', System.properties['zap.proxy']
}

Step 3, 为WebDriver设置代理

public WebDriver setupDriverProxy() {
    DesiredCapabilities cap = new DesiredCapabilities();

    String zapProxySetting = getProperty(ZAP_PROXY_KEY);
    if (StringUtils.isNotBlank(zapProxySetting)) {
        Proxy proxy = new Proxy();
        proxy.setHttpProxy(zapProxySetting)
                .setFtpProxy(zapProxySetting)
                .setSslProxy(zapProxySetting);
        cap.setCapability(PROXY, proxy);
    }

    return new FirefoxDriver(cap);
}

Step 4, 启动ZAP并运行测试

$ gradle zapStart build -Dzap.proxy=localhost:7070

在这行命令里,zapStart会从配置build.gradle文件里读取ZAP的安装目录信息,把它启动起来, 接下来build会运行所有的测试。

你可能发现在命令行里还有-Dzap.proxy=localhost:7070这样的设置,它的目的是告诉WebDriver通过localhost:7070这个代理来进行测试,而这个代理其实就是ZAP所监听的地址和端口。 做这样的设置主要是为了方便本地开发和测试,因为在本地开发的过程中,你可能不想在每次的测试过程中都运行安全测试(虽然我们推荐你应该尽早、尽量频繁的运行安全测试),只想在代码提交之后,在CI服务器上运行测试的时候顺便运行安全测试, 为了达到这个目的,security-zap插件被设计成默认情况下不进行安全测试,除非明确的在命令行里告知WebDriver通过ZAP代理来进行测试。

Step 5, 生成安全报告

当所有的WebDriver测试执行完毕后,我们可以让security-zap插件生成一份安全报告,命令如下:

$ gradle zapReport

Step 6, 关闭ZAP

在完成所有的测试之后,你可以通过下面这条命令关闭ZAP

$ gradle zapStop

security-zap提供的命令

  • zapStart
  • zapStop
  • zapScan
  • zapReport
  • zapCrawlStop
  • zapCrawlResult

Example

如果你想要查看示例代码,请移步这里:try-zap

Feedback

Versions

Version
1.0.5
1.0.4
1.0.3
1.0.2
1.0.1
1.0.0