Я довольно новичок в ZAP, и мне приходится использовать Java-API ZAP для выполнения тестов безопасности в веб-приложении, используя Selenium для навигации по браузеру, создавая трафик для ZAP. Я использую Eclipse IDE для корпоративных разработчиков Java версии 2019-03 (4.11.0) с Java jdk-1.8.0_212 и Maven 3.5.3, а также 3 импортированные библиотеки: harlib версии 1.1.1 (edu.umass.cs.benchlab harlib ), zap api версия 1.7.0 (org.owasp zaproxy-api) и снимок прокси версии 2.4.2 (net.continuumsecurity zap-java-api)
Я следовал этому уроку: https://dzone.com/articles/automate-zap-security-tests-with-selenium-webdrive-1,, который работал. Напомним, что он использует 3 класса: один для создания экземпляра веб-браузера (BrowserDriverFactory.java), второй для хранения всех функций и параметров навигации (WebSiteNavigation.java) и один для создания прокси-сервера ZAP, настройки и выполнения тесты безопасности как функции @Test (ZapSecurityTest.java).
У меня возникла небольшая проблема с прокси моего локального приложения:: кажется, что мое локальное приложение не использует прокси ZAP, даже если я хромодрайвер хорошо осведомлен о прокси (я вижу нелокальный трафик в пользовательском интерфейсе ZAP). Странно то, что я даже явно добавил свой локальный URL-адрес в контекст и установил его в области видимости:
clientapi.context.includeInContext(contextName,
java.util.regex.Pattern.quote(WebSiteNavigation.BASE_URL));
clientapi.context.setContextInScope(contextName, "true");
После этого и навигации по моему локальному приложению я вижу связанный нелокальный трафик в пользовательском интерфейсе ZAP, но не локальный. И когда я проверяю, что возвращает clientapi.context.urls (contextName), он пуст.
Я создаю свой прокси с:
private static Proxy createZapProxyConfiguration() {
Proxy proxy = new Proxy();
proxy.setHttpProxy(ZAP_PROXYHOST + ":" + ZAP_PROXYPORT);
proxy.setSslProxy(ZAP_PROXYHOST + ":" + ZAP_PROXYPORT);
return proxy;
}
Который называется:
@Before
public void setUp() {
// Configure ZAP Scanner
zapScanner = new ZAProxyScanner(ZAP_PROXYHOST, ZAP_PROXYPORT,
ZAP_APIKEY);
clientapi = new ClientApi(ZAP_PROXYHOST, ZAP_PROXYPORT);
// Start new session
zapScanner.clear();
log.info("Started a new session: Scanner");
// Create ZAP API client
zapSpider = (Spider) zapScanner;
// Create driver object
driver = BrowserDriverFactory.createChromeDriver
(createZapProxyConfiguration(), BROWSER_DRIVER_PATH);
siteNavigation = new WebSiteNavigation(driver);
}
Который также звонит:
public static WebDriver createChromeDriver(Proxy proxy, String path) {
// Set proxy in the chrome browser
DesiredCapabilities capabilities = DesiredCapabilities.chrome();
capabilities.setCapability("proxy", proxy);
// Set system property for chrome driver with the path
System.setProperty("webdriver.chrome.driver", path);
capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
ChromeOptions options = new ChromeOptions();
options.merge(capabilities);
return new ChromeDriver(options);
}
Как ни странно, несколько дней назад, когда я впервые настроил это, оно работало как чудо ... Затем я попытался автоматизировать процесс аутентификации, и с тех пор он не работает ...
Я что-то здесь упускаю? Я хотя бы смотрю в нужном месте?