web-dev-qa-db-ja.com

個別のWebサイトに基づいてOWASP ZAPからレポートをエクスポートできますか?

スキャンした30のWebサイトのリストがあります。個別のウェブサイトごとにレポートを引き出す必要があります。できますか?現在、私はレポートを実行して30のすべての結果を取得しているだけで、それをふるいにかける時間のない膨大なデータの塊になってしまいます。

2
n_hov

ZAPレポートは間違いなくいくつかの改善と関係があります。ただし、ZAP APIを介してJSONおよびXML形式ですべてのアラートにアクセスできます。 (オプションを使用して)APIを有効にすると、次のようなURLにアクセスできます。

http://zap/JSON/core/view/alerts/?baseurl=http%3A%2F%2Fwww.example.com%2F&start=&count=

www.example.comで報告されたすべてのアラートを取得する

参考までに、ZAPユーザーグループがあります。 http://groups.google.com/group/zaproxy-users ZAPの[オンライン]メニューからもアクセスできます。それはおそらくZAP固有の質問のためのより良いフォーラムです:)

2
Simon Bennetts

Owsap-zapの最近の更新に従って、アラートレポートを生成できますpdfとして生成できます

レポートの下で見つけることができます->アラートレポートの生成

レポートの設計方法を設計するために、オプションでレポートを構成できます->レポート

このネイティブJava ZAP APIのクライアント: https://github.com/continuumsecurity/zap-Java-api を使用することもできます。

それからあなたは行うことができます:

ZAProxyScanner zaproxy = new ZAProxyScanner(Host, PORT, "");
getAlertsByHost(zaproxy.getAlerts());


private Map<String, List<Alert>> getAlertsByHost(List<Alert> alerts) {
    Map<String, List<Alert>> alertsByHost = new HashMap<String, List<Alert>>();
    for (Alert alert : alerts) {
        URL url = null;
        try {
            url = new URL(alert.getUrl());
            String Host = url.getHost();
            if (alertsByHost.get(Host) == null) {
                alertsByHost.put(Host, new ArrayList<Alert>());
            }
            alertsByHost.get(Host).add(alert);
        } catch (MalformedURLException e) {
            System.err.println("Skipping malformed URL: "+alert.getUrl());
            e.printStackTrace();
        }
    }
    return alertsByHost;
}
0
stephendv