前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >接口测试平台代码实现148:加密算法的设计与实现

接口测试平台代码实现148:加密算法的设计与实现

作者头像
我去热饭
发布2022-05-19 10:14:33
2840
发布2022-05-19 10:14:33
举报
文章被收录于专栏:测试开发干货

在我们之前的章节中成功的结束了暂时的 UI美化。

总有同学问我,饭佬,饭哥哥! 接口测试平台什么时候能结束啊?

我会坦然的回答: 结束?结束了我还水什么?结束了你在公司部署好之后吃老本么?下季度OKR怎么办?什么APP 什么系统不是天天迭代 天天有新需求 新设计,都结束了,程序员去要饭么?

所以结束是不可能的,但是功能会逐步完善,你什么时候想用都可以下载。这个过程中我吸取了很多同学的宝贵建议,评估后进行设计实现。期盼它会越来越好,有更多的变化出现。

它也帮助了很多很多人,有的拿到了S绩效,有的找到了高薪OFFER,这些都是事实。 这样宝贵的教程,我不会让它随便终结的。

所以这里开启新的一大篇章: 加密算法的设计

所谓加密,就是把一些重要敏感数据经过加密 发送给服务器。服务器再解密得到原始数据。

这样做的目的就是防止数据中途被人拦截或伪造。

当然 加密的算法 就是真正的秘密,也就是只有客户端和服务器 才知道的秘密。一般的加密倒过来就是解密。

不同的公司 不同的组,不同的端,一般加密的算法都是不同的,所以我们这里平台的设计是,每个项目都有自己的一套加密算法。

比如:公司要求加密策略为:要把请求URL后加入一个叫做sign的变量,它是由 url中其他所有参数的key=value,放在一起,然后通过base64/sha1等自动加密算法加密成32位的字符串,然后这个字符串再加入时间戳,成为42位的字符串,然后再用sha1加密一遍,这个结果,就是URL最后sign的值。 完整url传给服务器后,服务器第一件事就是看看这个url的参数是不是被人伪造过,如果伪造过,黑客并不知道加密策略,所以后面的sign的值进行解密后,发现并不是传过来的url的各参数key=value,那就会判定这个请求无效,给你返回个错误参数等等。

平台要做的就是,给每个项目的一套加密算法,让使用者自行填充,我们提供一些开源加密函数的调用,比如上面例子提到的 base64和sha1。然后让用户自己写成如下格式:

  1. 选择加密的位置:URL 还是 BODY ,一般都是URL
  2. 选择加密的数据来源:也就是都需要哪些字段来作为入参变量。比如有的固定是选url或body中的 userid和token俩个变量,其他变量不考虑。那这里我们让用户写上userid,token。然后平台自动去url和body中去找这俩个字段和值
  3. 最后让用户写上 表达式:比如: sign=base64(base64("#token#"+"#userid#")+"#time#")

注意其中我们会把##包裹的当做变量去找到真实的值进行替换,如果用户需求是 连key一起,那么应该告诉他,写成如下这样:

sign=base64(base64("token=#token#"+"userid=#userid#")+"#time#")

而且其中引号千万不能少,我们会忠实的替换后,进行exec的执行脚本命令,如果没有引号,那么就会出现报错,把字符串当做了变量,当然就报错找不到这个变量了~

然后在 我们的普通接口调试,异常测试,用例执行,登录态接口调试 等地方,添加是否加密的开关,让用户自己选择即可。

这个架构设计和我们之前的项目公共变量替换类似,照样去写一个公共的替换函数,然后兼容上面四个使用地点即可。

前端设计上,依然是点开加密算法按钮后弹出一个弹层。让用户按照上述设计实现交互。

好了本节课的内容到此结束,我们开启了一个新的篇章哦~

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-06-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试开发干货 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档