尝试在连续集成(CI)设置中使用ZAP(2.4.3)。我可以将ZAP作为守护进程运行,通过将ZAP用作代理来运行所有Selenium测试(在Java中),然后能够使用调用htmlreport
的RESTapi来获得被动扫描程序的最终报告。这很好,但我也想使用活动扫描仪。
ZAP的文档中多次提到在CI中使用Active Scanner,但尚未找到任何关于它的工作示例或教程……是否存在?
我想要实现的是:一旦Selenium回归套件完成运行,就在它访问的所有页面上运行Active Scanner
试图查看ZAP的RESTapi,但大多没有文档:
https://github.com/zaproxy/zaproxy/wiki/ApiGen_Index
理想情况下,最好有这样的东西:
- 在所有访问的URL上异步启动活动扫描
- 轮询以检查活动扫描运行是否已完成
在RESTapi中,似乎有一些相关的东西,但是:
ascan/scan
需要一个url作为输入。可以调用core/urls
来查看Selenium测试访问了什么,但接下来如何设置正确的身份验证(日志凭据)?如果访问url的顺序很重要怎么办?如果只有使用特定凭据才能访问页面,该怎么办- 存在
ascan/scanAsUser
,但不清楚如何从ZAP检索contextId
和userId
。一个麻烦的解决方法是修改Selenium测试,在磁盘上写入他们访问的URL以及他们正在使用的日志记录/密码凭据,然后,在所有测试完成后,从磁盘读取这些信息以调用ZAP。有什么更简单的方法吗
好的,所以这里有很多问题:)
ZAP通常扫描URL的层次结构,例如https://www.example.com/app应用程序的顶级url。我们有点假设你知道会发生什么;)
身份验证处理起来很简单,请参阅https://github.com/zaproxy/zaproxy/wiki/FAQformauth
ascan/status调用返回已完成的%
您可以找到ZAP用户组http://groups.google.com/group/zaproxy-users更适合这类问题。但是是的,我们确实需要改进API文档:/
干杯,
Simon(ZAP项目负责人)