首先,下面的方式只支持post请求,get方式可以自己扩展。每当一个不能鉴权的接口需要被其它服务调用时,如果这个接口会暴漏在公网上,那么这个不能鉴权的接口或者无token的接口就需要换一种方式进行权限验证。通常使用的方法是参数加密。调用方和被调用方参数使用同一种规则加密,匹配成功,则允许请求,匹配失败,则拒绝请求。这种根据参数加密的方式往往能防止请求被其他方拦截后篡改参数,进行非法请求。这种加密有以下几种作用:
1. 加密时可以附带接口请求时的时间戳,这样可以保证一个接口只能在有效期内被访问。
2. 参数加密时可以加密钥串一起再加密,确保参数规则被人识别后,也能篡改参数,如果别人也识别出你的加密规则,但是他没有密钥串,即使加密后也会请求失败。
3. 加密后的密码很难被逆向解密,加密后,即使被拦截,加密串和参数虽然都被非法获取,但是不能修改任意参数再请求,而且请求也会有时间限制。确保了接口的安全性。
看代码:
@Slf4j
public class ParamsEncodeUtil {
public static void main(String[] args) {
Map<String, Object> map = new HashMap<>();
map.put("prizeGoodsCode", "prizeGoodsCode");
map.put("prizeGoodsName", "prizeGoodsName");
map.put("prizeGoodsNum", 1);
map.put("userId", 123);
map.put("userName", "userName");
map.put("winPrizeTime", new Date());
map.put("timestamp", System.currentTimeMillis());
String secret = "z123";
System.out.

该博客介绍了如何通过参数加密来增强接口安全性,防止未授权的请求。文中提到,当接口可能暴露在公网时,可以采用参数加密方式,结合时间戳确保请求的有效期,并且通过密钥串增加篡改参数的难度。通过排序、拼接、MD5加密等步骤,创建签名以验证请求的合法性。这种方式能够有效防止接口被拦截篡改,提高系统的安全性。
最低0.47元/天 解锁文章
513

被折叠的 条评论
为什么被折叠?



