Jmeter模拟加密密码登录

  • 方案一:打开浏览器,按下 F12,使用一个用户,输入正确的秘密从界面登录,查看登录接口传入的密码密文。然后在 Jmeter 中登录接口的 password 参数值设置为此密文。
    不足:Jmeter 启动多个线程时,每个登录用户的密码需一样
    在这里插入图片描述

  • 方案二:获得前端密码加密的方式,在 Jmeter 上编写 js 脚本,按加密秘钥加密明文密码得到密文作为变量。然后登录接口引用变量。

在登录接口下方添加 JSR223 PreProcessor
在这里插入图片描述

编写脚本

/* URL Loading*/
// load("https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/crypto-js.js"); 
/*
 * for loading file from local of your jmeter place script in bin folder then 
 * load("file name with extension");
 */

var window = this; //定义window全局变量
var navigator = this; //定义navigator全局变量
load("jsencrypt.js"); //加载js文件


var publicKey = "公钥字符串"; //找开发要的公钥秘钥
var crypt = new JSEncrypt();
crypt.setPublicKey(publicKey);//设置公钥秘钥
log.info("${passwd}"); //passwd是通过csv获取到的参数值,打印出密码明文,用于调试
var passwdEncryption = crypt.encrypt("${passwd}"); //对密码明文进行加密
log.info(passwdEncryption); //打印出密码加密后样式
vars.put("passwdEncryption", passwdEncryption); //把加密后的放入Jmeter全局变量中,然后在登录接口引用${passwdEncryption}
// 加载脚本 默认目录是jemeter下bin目录
load("md5.min.js"); 
//load("http://localhost:8081/js/md5.min.js");
var password = "${password}" // 通过 csv 获取到的参数值,需要加上双引号,使参数值变为字符串类型
var salt = "9d5b364d";
var str = "" + salt.charAt(0) + salt.charAt(2) + password + salt.charAt(5) + salt.charAt(4);
var pwd = md5(str);
vars.put("pwd", pwd);//把加密后密码放入Jmeter全局变量中,然后在登录接口引用${pwd}

在这里插入图片描述

JMeter中JSR223 PreProcessor常用内置函数

  1. log:记录日志文件,写入到jmeber.log文件
    log.info(“Test log!)
  2. vars:操作jmeter变量,提供读取/写入访问变量的方法,
    vars.get(String key)// 从jmeter中获得变量值;
    vars.put(String key,String value)// 数据存到jmeter变量中; 
    vars.putObject(“obj1”,new Object())
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Apache JMeter是一个强大的开源性能测试工具,用于测试应用服务器、Web应用、网络协议等的性能。在JMeter中,当你需要发送敏感数据,如密码,进行安全测试或者模拟生产环境时,会涉及到数据加密以保护这些信息不被直接暴露。 1. **明文传输**:默认情况下,JMeter直接发送HTTP请求中的参数,包括密码。这可能会导致敏感信息在日志或网络抓包中可见,不安全。 2. **Base64编码**:一种简单的加密方法是使用Base64对密码进行编码,这样可以防止密码在日志中以可读格式显示,但不是真正的加密,只是隐藏了字符。 3. **HTTPS**:如果你的测试目标支持HTTPS,JMeter会自动处理SSL/TLS加密密码将作为加密流量的一部分,不会明文传输。 4. **HTTP Header**:可以通过设置`Authorization`字段为`Basic`(使用Base64编码的用户名密码)或`Bearer`(令牌)的形式,将密码作为HTTP头信息传递,这样更安全,但仍然是在客户端和服务器之间进行传输。 5. **使用Postman Collection Runner**:JMeter可以导入Postman Collection Runner格式的测试计划,其中包含了预设的加密机制,例如使用API密钥代替密码。 6. **使用HTTPampler的自定义处理器**:比如你可以使用HTTP Cookie Manager、HTTP Proxy Server等插件,配合合适的配置,来管理会话管理和加密数据。 重要提示:无论哪种方法,为了实现更强的安全性,你通常需要在服务器端实施完整的加密策略,而不是仅仅依赖于客户端的加密措施。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

讓丄帝愛伱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值