如何从OWASP ZAP守护进程会话导出HTML等可读扫描报告
解决方案
无需调整现有守护进程的核心代理配置,仅需修正少量配置细节,搭配对应指令即可完成可读报告导出,同时解决会话无法导入GUI的问题:
1. 修正现有启动配置的异常点
当前启动命令存在两个容易引发故障的细节,调整后即可解决会话无法导入GUI的问题:
-newsession指定的会话路径缺少ZAP默认识别的.session后缀,将该段配置修改为-newsession $INIT_CWD/zap-results/session.session,ZAP GUI即可正常识别生成的会话文件- 测试执行完成后不要强杀ZAP进程,否则会导致会话文件写入损坏,测试结束后先调用优雅关闭接口:
curl "http://localhost:8080/JSON/core/action/shutdown/"
等待进程自行退出即可,此时生成的.session文件可直接在ZAP GUI中打开加载。
2. 导出可读报告的两种实现方式
你提到的-last_scan_report参数在2022版ZAP中已正式废弃,改用官方核心报告模块能力即可,两种方式按需选择:
方式一:测试完成后直接调用API生成(适配守护进程场景,推荐)
所有Cypress用例执行完成、流量全部经过ZAP代理后,直接在本地调用ZAP开放的报告生成接口即可,由于你已配置api.disablekey=true,无需携带API密钥:
curl "http://localhost:8080/JSON/core/action/generateReport/?title=Cypress代理扫描报告&template=traditional-html&reportDir=$INIT_CWD/zap-results/&reportFileName=zap-scan-report.html&overwrite=true"
相关参数说明:
template支持替换为其他输出格式,常用可选值如下:modern-html:带交互筛选能力的新版HTML报告report-pdf:PDF格式报告report-md:Markdown格式报告report-json:结构化JSON格式报告,可用于二次加工
- 接口调用成功后会直接在指定目录生成报告文件,无需重启ZAP进程
方式二:基于留存会话离线命令行导出
如果不想在测试流程中插入API调用,可等ZAP优雅关闭、会话文件完整留存后,单独执行命令加载会话导出报告:
java -jar ./zap/zap-D-2022-05-16.jar -cmd -session $INIT_CWD/zap-results/session.session -exportreport $INIT_CWD/zap-results/zap-report.html -reporttitle "Cypress代理扫描报告" -template traditional-html
该命令会以无界面命令行模式启动ZAP,加载已有的测试会话文件,生成对应报告后自动退出,无需启动GUI。
补充说明
如果仅代理Cypress测试流量,ZAP默认只会执行被动扫描,生成的报告将包含所有代理请求、被动扫描识别的安全告警;如果需要追加主动爬虫、主动扫描结果,在生成报告前调用对应API触发扫描任务即可,无需修改基础代理配置。
内容的提问来源于stack exchange,提问作者Brian
相关产品推荐
相关产品推荐

