Я хочу использовать ZAP API для выполнения проверки подлинности с использованием нескольких различных веб-приложений. Эти веб-приложения имеют разные механизмы входа в систему, и я не хочу выполнять утомительный процесс входа в систему с помощью нескольких различных форм, каждый из которых необходимо настроить вручную.Аутентификация сеанса API ZAP
Более простым решением является использование файлов cookie сеанса HTTP для каждого приложения для выполнения этих проверок с проверкой подлинности, однако я не вижу механизма для этого, не создавая контекст с ассоциированным пользователем.
Я попытался добавить новую сессию через HTTP сессий, несмотря на их не быть для этого случая использования:
def add_session(self, session_name, session_tokens):
self.zap.httpsessions.create_empty_session(self.target_url, session_name, apikey=self.api_key)
for token_name, token_value in session_tokens:
self.zap.httpsessions.set_session_token_value(self.target_url, session_name, token_name, token_value, apikey=self.api_key)
self.zap.httpsessions.add_session_token(self.target_url, session_name, apikey=self.api_key)
self.zap.httpsessions.set_active_session(self.target_url, session_name, apikey=self.api_key)
Однако при выполнении сканирования любые добавленные вручную куки не добавляются в последующих запросах к сервер.
Например, при выполнении паука информация сеанса игнорируется:
def spider(self):
scanid = self.zap.spider.scan(self.target_url, apikey=self.api_key)
while (int(self.zap.spider.status(scanid)) < 100):
print 'Spider progress %s%% ' % self.zap.spider.status(scanid)
time.sleep(1.0)
return self.zap.spider.full_results(scanid)
Можно ли выполнить сканирование путем добавления куки для запросов через API ZAP?
Или это единственная возможность вручную добавить данные формы и контекст для каждого веб-сайта, на который я хочу войти и сканировать?