如何查看扫描后是否生成了ZAP reports/alerts?
How to check if ZAP reports/alerts have been generated after scan?
我目前正在使用 REST-API(使用 Groovy 作为语言)与 ZAP 交互。
我想要实现的是开始扫描并在扫描完成后检索结果。
我目前正在查看扫描状态,我假设一旦扫描状态为 100
,我就可以检索结果,表明扫描已完成。但是这不起作用,我必须连续查询 /JSON/core/view/alerts/
直到检索到实际结果。
这基本上是我的代码:
String zapUrl = ${zap.getContainerIpAddress()}:8090"
def scanResponse = slurper.parse(new URL("$zapUrl/JSON/spider/action/scan/?url=http://featuretron:8080"))
String scanId = scanResponse.scan
def scanStatus = slurper.parse(new URL("$zapUrl/JSON/spider/view/status/?scanId=$scanId"))
while (scanStatus.status != "100") {
sleep(500)
scanStatus = slurper.parse(new URL("$zapUrl/JSON/spider/view/status/?scanId=$scanId"))
}
def alerts = slurper.parse(new URL("$zapUrl/JSON/core/view/alerts/"))
while (alerts.alerts.isEmpty()) {
sleep(500)
alerts = slurper.parse(new URL("$zapUrl/JSON/core/view/alerts/"))
}
我的问题是,是否存在更稳定的方法来指示是否已生成结果。好像也一样,好像官方的例子中的Java-API等等也是这样:
您是 运行 蜘蛛并等待它正确完成。
但是ZAP在后台线程中进行被动扫描,这就是你需要等待的。
也有 API 调用,这是一个很好的例子:https://github.com/zaproxy/zap-api-python/blob/master/src/examples/basic-spider-scan.py - 它使用 python API,但底层 API 无论您使用什么客户端,都是一样的。 java 示例需要更新 ;)
顺便说一下,在您的代码中,您只是要执行被动扫描而不是主动扫描(ZAP 实际上会攻击您的应用程序)。这是你想要的吗?
我目前正在使用 REST-API(使用 Groovy 作为语言)与 ZAP 交互。
我想要实现的是开始扫描并在扫描完成后检索结果。
我目前正在查看扫描状态,我假设一旦扫描状态为 100
,我就可以检索结果,表明扫描已完成。但是这不起作用,我必须连续查询 /JSON/core/view/alerts/
直到检索到实际结果。
这基本上是我的代码:
String zapUrl = ${zap.getContainerIpAddress()}:8090"
def scanResponse = slurper.parse(new URL("$zapUrl/JSON/spider/action/scan/?url=http://featuretron:8080"))
String scanId = scanResponse.scan
def scanStatus = slurper.parse(new URL("$zapUrl/JSON/spider/view/status/?scanId=$scanId"))
while (scanStatus.status != "100") {
sleep(500)
scanStatus = slurper.parse(new URL("$zapUrl/JSON/spider/view/status/?scanId=$scanId"))
}
def alerts = slurper.parse(new URL("$zapUrl/JSON/core/view/alerts/"))
while (alerts.alerts.isEmpty()) {
sleep(500)
alerts = slurper.parse(new URL("$zapUrl/JSON/core/view/alerts/"))
}
我的问题是,是否存在更稳定的方法来指示是否已生成结果。好像也一样,好像官方的例子中的Java-API等等也是这样:
您是 运行 蜘蛛并等待它正确完成。 但是ZAP在后台线程中进行被动扫描,这就是你需要等待的。
也有 API 调用,这是一个很好的例子:https://github.com/zaproxy/zap-api-python/blob/master/src/examples/basic-spider-scan.py - 它使用 python API,但底层 API 无论您使用什么客户端,都是一样的。 java 示例需要更新 ;)
顺便说一下,在您的代码中,您只是要执行被动扫描而不是主动扫描(ZAP 实际上会攻击您的应用程序)。这是你想要的吗?