ZAP 脚本行为不一致
ZAP scripts behave inconsistnently
我正在尝试为 Open API 扫描项目设置身份验证和 http 发件人脚本。
在某个时间点,我达到了 oauth2 的身份验证脚本正常工作(生成从远程端点获得的有效令牌)并且 http_sender 为请求附加授权 header 的状态。后来发现我输入错误 required header 所以我更改了它的名称,保存了脚本并重新 运行 脚本(通过扫描)。结果现在两个 headers 都附加到传出的 http 请求:输入错误的版本和正确的版本。重新启动 ZAP 并重新加载 session 后,行为没有改变,但是当我创建一个新的 session 时,输入错误的 header 消失了,我找不到在哪里可以清理它而且它看起来不当脚本需要一个小改动时重新创建 session 的权利。
我遇到的第二个问题是身份验证脚本在没有任何修改的情况下就停止工作了。我偶尔会在环境之间切换,但代码保持不变。我什至将硬编码值从上下文移动到脚本,但它仍然不起作用。我在 python 中设置了一个并行脚本来获取令牌并且它有效(所有参数都相同),但在 ZAP 中我遇到身份验证失败(重新创建 session 没有帮助)。我不拥有 oauth 端点,所以我无法直接查看它,但我怀疑这两个问题有一些共同点。看起来有些数据驻留在阴影中并影响脚本的方式 运行。
发件人脚本的第一个版本:
function sendingRequest(msg, initiator, helper) {
var loginToken = org.zaproxy.zap.extension.script.ScriptVars.getGlobalVar("logintoken");
msg.getRequestHeader().setHeader("Autentication", "Bearer " + loginToken);
}
发件人脚本的第二个版本:
function sendingRequest(msg, initiator, helper) {
var loginToken = org.zaproxy.zap.extension.script.ScriptVars.getGlobalVar("logintoken");
msg.getRequestHeader().setHeader("Authorization", "Bearer " + loginToken);
}```
Authentication function is just tuned version of the zap template to send oauth2 parameters in the body of the POST request and actually worked for some time. It would really help to have some troubleshooting capabilities during scripting.
关于第一个问题,这完全取决于脚本的使用方式。 ZAP session 是所有请求和响应的记录。对于一些旧的回复,您使用了错误的 header。那件事发生了,你无法收回。如果您重复使用这些请求,则 ZAP 将发送错误的 header 除非您将其删除。如果您创建的新请求不是基于历史请求,则 header 不应存在。
关于第二个问题,身份验证很困难,而且可能会因看似细微的差异而失败:( 一个不错的选择是通过 ZAP 代理您的 python 脚本。希望它仍然有效,然后您可以将工作请求与失败请求进行比较。
我正在尝试为 Open API 扫描项目设置身份验证和 http 发件人脚本。
在某个时间点,我达到了 oauth2 的身份验证脚本正常工作(生成从远程端点获得的有效令牌)并且 http_sender 为请求附加授权 header 的状态。后来发现我输入错误 required header 所以我更改了它的名称,保存了脚本并重新 运行 脚本(通过扫描)。结果现在两个 headers 都附加到传出的 http 请求:输入错误的版本和正确的版本。重新启动 ZAP 并重新加载 session 后,行为没有改变,但是当我创建一个新的 session 时,输入错误的 header 消失了,我找不到在哪里可以清理它而且它看起来不当脚本需要一个小改动时重新创建 session 的权利。
我遇到的第二个问题是身份验证脚本在没有任何修改的情况下就停止工作了。我偶尔会在环境之间切换,但代码保持不变。我什至将硬编码值从上下文移动到脚本,但它仍然不起作用。我在 python 中设置了一个并行脚本来获取令牌并且它有效(所有参数都相同),但在 ZAP 中我遇到身份验证失败(重新创建 session 没有帮助)。我不拥有 oauth 端点,所以我无法直接查看它,但我怀疑这两个问题有一些共同点。看起来有些数据驻留在阴影中并影响脚本的方式 运行。
发件人脚本的第一个版本:
function sendingRequest(msg, initiator, helper) {
var loginToken = org.zaproxy.zap.extension.script.ScriptVars.getGlobalVar("logintoken");
msg.getRequestHeader().setHeader("Autentication", "Bearer " + loginToken);
}
发件人脚本的第二个版本:
function sendingRequest(msg, initiator, helper) {
var loginToken = org.zaproxy.zap.extension.script.ScriptVars.getGlobalVar("logintoken");
msg.getRequestHeader().setHeader("Authorization", "Bearer " + loginToken);
}```
Authentication function is just tuned version of the zap template to send oauth2 parameters in the body of the POST request and actually worked for some time. It would really help to have some troubleshooting capabilities during scripting.
关于第一个问题,这完全取决于脚本的使用方式。 ZAP session 是所有请求和响应的记录。对于一些旧的回复,您使用了错误的 header。那件事发生了,你无法收回。如果您重复使用这些请求,则 ZAP 将发送错误的 header 除非您将其删除。如果您创建的新请求不是基于历史请求,则 header 不应存在。
关于第二个问题,身份验证很困难,而且可能会因看似细微的差异而失败:( 一个不错的选择是通过 ZAP 代理您的 python 脚本。希望它仍然有效,然后您可以将工作请求与失败请求进行比较。