尝试在持续集成 (CI) 设置中使用 ZAP (2.4.3)。我可以将 ZAP 作为守护程序运行,使用 ZAP 作为代理运行我所有的 Selenium 测试(在 Java 中),然后能够使用 REST api 调用htmlreport
来获得被动扫描器的最终报告。这很好用,但我也想使用 Active Scanner。
在 ZAP 的文档中多次提到在 CI 中使用 Active Scanner,但没有找到任何关于它的工作示例或教程……是否存在?
我想要实现的是:一旦完成运行,就在 Selenium 回归套件访问的所有页面上运行 Active Scanner。
试图查看 ZAP 的 REST api,但大多没有记录:
https://github.com/zaproxy/zaproxy/wiki/ApiGen_Index
理想情况下,有这样的东西会很棒:
- 在所有访问的 url 上异步启动 Active Scan
- 轮询以检查 Active Scan 运行是否已完成
在 REST api 中似乎有一些相关的东西,但是:
ascan/scan
需要一个 url 作为输入。可以调用core/urls
查看 Selenium 测试访问过的内容,但是如何设置正确的身份验证(日志凭证)?如果访问 url 的顺序很重要怎么办?如果页面只能通过特定的凭据访问怎么办?- 有一个
ascan/scanAsUser
,但不清楚如何contextId
以及userId
可以从 ZAP 中检索。一个麻烦的解决方法是修改 Selenium 测试以在磁盘上写入他们访问的 url 以及他们正在使用的日志记录/密码凭据,然后,一旦所有测试完成,从磁盘读取此类信息以调用 ZAP。有没有更简单的方法?