安全系列验证(RSA登录验证,TOKEN令牌,报文RSA+AES传输,防篡改验证,防重复提交):

〇、

  1. 本文结合了登录RSA验证,token验证,报文的加密传输(AES保证效率、RSA保证安全),防篡改以及其他的相关验证/限制(防重复提交、ip/token频次限制后期都可以融合进来)等一些列的技术点,可供参考;
  2. tips: 报文RSA私钥与AES密钥明文 都有2种作用:RSA私钥,还是TOKEN算法密钥;AES密钥明文 还是防篡改的KEY;这样充分利用了其安全的性质进行重复利用,可以节省部分开销,否则还需要额外进行维护

一、登录

  1. 客户端填写账密信息发起请求,后台生成RSA密钥,redis保存私钥(k-v:公钥-私钥),返回公钥
  2. 客户端对账密使用RSA公钥进行加密,再携带公钥传输到后台(防止传输过程中账密被解密获取)
  3. 后台根据携带的公钥找到私钥然后解密,进行验证账密,成功后继续进行
  4. 然后使用JWT技术生成token,token的算法可以使用RSA私钥作为token算法的密码,最终生成token(真token),然后拼接RSA公钥生成最终的伪token(真token###RSA公钥)
  5. 然后将生成的伪token(token+RSA公钥),传给客户端用于令牌验证以及报文的加密,json格式({"token":"真正token###rsa公钥"}

二、 前端发送请求

  1. 客户端填写请求参数,然后使用AES以及随机生成的AES密钥明文对称加密将报文进行加密,生成AES加密的报文(对称加密效率高)
  2. 然后解析token,获取rsa公钥,使用RSA公钥对AES密钥明文进行加密,生成RSA加密的AES密钥(非对称加密更安全)
  3. 再使用AES密钥明文作为防篡改key对上述AES加密的报文使用(256+MD5)进行计算,生成字符串作为签名256MD5签名,进行防篡改操作
  4. 最后发送带后台:报文json格式({"secretInfo":"AES加密的报文","aesKey":"RSA加密的AES密钥","checkStr":"256MD5签名","token":"真token###报文公钥"})。

三、 下面后台处理(验证部分使用aop切面编程+注解)

  1. 后台收到上述报文后,先解析伪token(真token###报文公钥),从redis获取对应的rsa私钥/token算法的key,使用rsa私钥/token算法的key计算验证token是否通过;
  2. 然后使用rsa私钥RSA加密的AES密钥进行解密,获取AES密钥明文/防篡改key
  3. 然后进行防篡改验证:使用256MD5和防篡改key生成签名与传进来的checkStr进行对比,如果一致则未被篡改
  4. 进行重复提交检测(以内容重复提交为例–即内容不得相同,修改过可再次提交),使用加密的报文内容作为key存储到redis并设置实现;ip/token访问频次限制等;
  5. 然后解密报文,并进行参数检测,json可以定义反射方法对参数进行验证;
  6. 最后进行业务处理,并返回处理结果。
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值