如何在zap API客户端中将身份验证方法设置为基于json的POST请求数据?

时间:2018-05-15 05:30:17

标签: owasp zap

我正在编写一个python客户端来使用zap客户端库测试webapp。由于在稳定的zap版本中没有支持基于json的auth方法,我现在正在使用live zap容器。

在python客户端中,我尝试过以下内容:

login_config_params = ''.join(("loginUrl=https://x.x.x.x/login/&loginRequestData=",
                           urllib.parse.quote_plus("{\"username\":\"xxxxx\",\"password\":\"xxxxx\"}")))


zap.authentication.set_authentication_method(context_id, "jsonBasedAuthentication", authmethodconfigparams=login_config_params, apikey=apikey)

当执行此操作时,我没有在容器中看到有关成功设置的任何日志。

请帮我检查一下这是否合适并准备好继续

2 个答案:

答案 0 :(得分:1)

如果只是使用API​​,那么在正确设置身份验证时可以解决问题。

我建议使用ZAP UI进行测试,因为这样可以让您更轻松地查看更新内容 - 您仍然可以使用API​​配置ZAP,但您也可以查看使debugginf更容易的请求和响应。

答案 1 :(得分:0)

大多数REST / JSON类型的API使用某种授权标头,因此您应该看到您的应用使用的内容,并模仿它。然后将这些标头添加到每个请求。例如,如果您有cookie和授权标头:

zap.replacer.add_rule('Auth Header', True, 'REQ_HEADER', False, 'Authorization', 'Bearer ' + auth_token) zap.replacer.add_rule('Cookie', True, 'REQ_HEADER', False, 'Cookie', 'SESSIONID=' + sessionid)

这些将包含在每个后续扫描请求中。