集成的Python API腳本我有使用Python API如下觸發ZAP創建ZAP HTML報告(OWASP): -如何使用與詹金斯
腳本來源: -
https://github.com/zaproxy/zaproxy/wiki/ApiPython
我希望通過命令行生成HTML報告。
我正在嘗試與Jenkins進行整合。 我在Jenkins中發現了Owasp的一些插件,但似乎沒有按預期工作。
任何想法,鏈接,教程將真的幫助我。
集成的Python API腳本我有使用Python API如下觸發ZAP創建ZAP HTML報告(OWASP): -如何使用與詹金斯
腳本來源: -
https://github.com/zaproxy/zaproxy/wiki/ApiPython
我希望通過命令行生成HTML報告。
我正在嘗試與Jenkins進行整合。 我在Jenkins中發現了Owasp的一些插件,但似乎沒有按預期工作。
任何想法,鏈接,教程將真的幫助我。
在此URL/API(http://ZAP-IP:PORT/UI/core/other/htmlreport/)用戶可以獲取報告。
我沒有找到任何zap支持插件,所以我寫了selenium webdriver java腳本來完成我的任務。該代碼是: -
@Test
public void Report() {
System.setProperty("webdriver.chrome.driver",System.getProperty("user.dir")+"\\src\\lib\\chromedriver.exe");
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.addArguments("--start-maximized");
WebDriver driver = new ChromeDriver(chromeOptions);
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
driver.get("http://localhost:8080/UI/core/other/htmlreport");
driver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS);
driver.findElement(By.id("apikey")).sendKeys("ChangeMe");
driver.findElement(By.id("button")).click();
SimpleDateFormat dateFormatForFoldername = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");
Date currentDate = new Date();
String folderDateFormat = dateFormatForFoldername.format(currentDate);
try {
URL oracle = new URL(driver.getCurrentUrl());
BufferedReader in = new BufferedReader(
new InputStreamReader(oracle.openStream()));
BufferedWriter writer = new BufferedWriter(new FileWriter("Reports"+File.separator+"OwaspReport-"+folderDateFormat+".html"));
String inputLine;
while ((inputLine = in.readLine()) != null){
try{
writer.write(inputLine);
}
catch(IOException e){
e.printStackTrace();
return;
}
}
in.close();
writer.close();
driver.quit();
}
catch(Exception ex) {
System.out.println(ex.getMessage());
ex.printStackTrace();
}
}
注: - 更改URL中的端口,按您的ZAP端口和更換apiKey
希望它會幫助你:)
我發現了Python API會只連接到本地zaproxy服務器,所以jenkins slave和zaproxy服務器應該在同一臺機器(pod)中運行。
我使用jenkins管道和publishHTML插件來將報告集成到jenkins結果中。
由python腳本
fHTML=open('/zap/report/zapreport.html', 'w')
fHTML.write(zap.core.htmlreport())
fHTML.close()
產生詹金斯子機側的報告文件發佈報告,詹金斯導致
sh "cp /zap/report/* ./report"
publishHTML (target: [
allowMissing: false,
alwaysLinkToLastBuild: false,
keepAll: true,
reportDir: 'report',
reportFiles: 'zapreport.html',
reportName: "Zaproxy Report"
])
的http://本地主機:8080 /其它/ core/other/htmlreport /?apikey = mykey&formMethod = GET將顯示報告。但如何保存併發送與詹金斯指: - https://github.com/zaproxy/zaproxy/issues/2920 –