zoukankan      html  css  js  c++  java
  • postman prerequest动态加密数据构造

    app与服务端通信过程中有时需要加密,这样受保护的body更不易被破解。

    例子:

      工作中有遇到类似于http://test.baidu.com/ad/conf?m2=xx&ch=xxxxx&sign=xxx的请求,通过postman、jmeter在进行请求时由于无法直接获取到sign值,无法顺利走通接口,这时候下边的代码就work了。

    //签名规则:sign=md5(key1=value1&key2=value2&secret)
    var secret = "abcde";//secret
    var newtimestamp=Math.round(new Date().getTime());
    console.log("newtimestamp:"+newtimestamp);
    
    //请求参数名按照ASCII码升序排序
    keys = Object.keys(request.data).sort(); 
    
    //拼接待签名字符串
    var str = [];
    for (var p = 0; p < keys.length; p++) { 
        if(keys[p] == "sign" || request.data[keys[p]] === ""){
            // == 宽松相等,隐性类型转换,值相等,返回true;
            // === 严格相等,值和类型都相等,返回true
            continue;
        }
        if(keys[p] == "qbtime"){
            str.push(keys[p] + "=" + newtimestamp);
            continue;
        }
        str.push(keys[p] + "=" + request.data[keys[p]]);
    }
    
    var presign = str.join("&");
    presign = presign+"&"+secret; //添加secret
    console.log("presign:"+presign);
    var signSecret = CryptoJS.MD5(presign).toString();  //md5
    console.log("signSecret:"+signSecret);
    
    //重设环境变量
    pm.environment.unset("sign");
    pm.environment.unset("timestamp");
    pm.environment.set("sign", signSecret);
    pm.environment.set("timestamp", newtimestamp);
  • 相关阅读:
    java分页查询--oracle
    Tomcat Excel中的数据导出到页面中显示
    接口调用类3
    接口工具类2
    接口工具类
    redis 对外访问
    Spring 项目启动时执行
    scp 本地上传/下载服务器文件
    CentOS 安装 rabbitMQ
    卸载rabbitMQ
  • 原文地址:https://www.cnblogs.com/mncasey/p/11556081.html
Copyright © 2011-2022 走看看