Boo*_*man 4 javascript security sha postman
我正在尝试使用Postman发送一个GET http请求,其中包含一个参数,该参数是通过获取完整的请求查询字符串(在URL编码后,URL中问号右侧的所有内容)动态生成的,连接先前分配的共享密钥,然后执行生成的字符串的SHA-1哈希.
我会使用预请求脚本来实现这一目标.
谢谢.
我实际上找到了一个解决方案,并想分享它.
var params = [
["client_id", "222"]
,["account_id", ""]
];
// Build the request body string from the Postman request.data object
var requestBody = "";
var firstpass = true;
for(var i=0;i < params.length; i++) {
if(!firstpass){
requestBody += "&";
}
requestBody += params[i][0] + "=" + params[i][1];
firstpass = false;
postman.setGlobalVariable(params[i][0], params[i][1]);
}
requestBody += postman.getEnvironmentVariable("sharedSecretKey");
postman.setGlobalVariable("requestBody", requestBody);
var mac = "";
if(requestBody){
// SHA1 hash
mac = CryptoJS.SHA1(requestBody);
}
postman.setGlobalVariable("mac", mac);Run Code Online (Sandbox Code Playgroud)
然后,我只需要设置的URL的参数:{{的baseUrl}} /获取的client_id = {{CLIENT_ID}}&ACCOUNT_ID = {{ACCOUNT_ID}}&MAC = {{MAC}}
其中{{baseUrl}}是一个环境变量而{{client_id}},{{account_id}}是全局变量
希望它对某人有所帮助.
谢谢.
受此答案的启发,我使用以下 Postman 预请求脚本来创建请求的 SHA1 哈希。
请注意,这request.data是一个隐含变量,该CryptoJS库由Postman Sandbox 提供用于预请求脚本。
const hash = CryptoJS.HmacSHA1(request.data, 'yourSecret');
pm.globals.set('hash', hash);
Run Code Online (Sandbox Code Playgroud)
您现在可以使用{{hash}}语法将哈希值作为邮递员全局变量引用。
我这样做的目的是模拟GitHub Webhooks APIX-Hub-Signature提供的标头,因为我的 Web 服务会验证所有 Webhook 有效负载以匹配签名。所以为了测试我的网络服务,我还需要邮递员来生成一个有效的签名标头。
这是上述代码片段的改编版,用于生成X-Hub-Signature请求标头值。
GITHUB_WEBHOOK_SECRET使用我在创建 GitHub 应用程序时指定的值添加了 key=value 对。const hash = CryptoJS.HmacSHA1(
request.data,
pm.environment.get('GITHUB_WEBHOOK_SECRET')
);
pm.globals.set('X-HUB-SIGNATURE', 'sha1=' + hash);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4142 次 |
| 最近记录: |