传输签名校验
AI-摘要
GPT-4.0-turbo GPT
AI初始化中...
介绍自己 🙈
生成本文简介 👋
推荐相关文章 📖
前往主页 🏠
前往爱发电购买
传输签名校验
Takake1.axios请求拦截器判断请求类型
当请求为get请求时拼接请求参数
src\utils\request.js
1 | //初始化data,data为需要进行签名的字符串 |
当请求为post时拼接请求参数
src\utils\request.js
1 | if (config.method === 'post' && (typeof config.data) === 'object') { |
2.拼接参数并签名
- 拼接时间戳
src\utils\request.js
1 | let timestamp = Date.now() |
拼接盐签名并
src\utils\encrypto\sm3.js
1 | //SM3传输签名盐,请务必和后端保持一致,也可使用随机盐 |
- 签名生成Sign放入请求头,放行
src\utils\request.js
1 | config.headers['sign'] = digestSM3(data + timestamp) |
3.后端获取请Sign和Timestamp
在请求头中获取参数信息
com/gaomu/filter/SignatureHeaderFilter.java
1 | String timestamp = request.getHeader("Timestamp"); |
判断是否存在,并判断请求是否超时
com/gaomu/filter/SignatureHeaderFilter.java
1 | long timestampThreshold = System.currentTimeMillis(); |
4.判断请求类型
判断请求类型并拼接签名字符串
com/gaomu/filter/SignatureHeaderFilter.java
1 | if ("GET".equalsIgnoreCase(request.getMethod()) && Objects.nonNull(request.getParameterMap())) { |
5.签名判断
将拼接好的参数进行签名生成enSign与前端传的Sign做判断,相同则通过放行,不同抛出异常
com/gaomu/filter/SignatureHeaderFilter.java
1 | if (SM3Util.checkSign(data.toString(), sign, timestamp)){ |
5.1.签名逻辑
签名逻辑sm3(salt+$+uri+?+params+$+timestamp)
com/gaomu/utils/crypto/SM3Util.java
1 | public static boolean checkSign(String data, String sign, String timestamp){ |
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果