C#请求JavaAPI接口安全校验流程(精简版)
简介:以上文章讲述的是【C# 面试考核基础知识】接下来我总结一下【C#请求JavaAPI接口安全校验流程(精简版)】。觉得我还可以的可以加群一起督促学习探讨技术。 个人学习资料库http://www.aolanghs.com/ 微信公众号搜索【欢少的成长之路】
我始终相信,分享的越多收获的就越多!所以这里把我最近几天钻研的项目安全校验机制流程实现与细节分享给大家!
利用RSA加密算法,MD5加密算法,签名认证机制,Token校验机制,时间戳失效机制
加密解密流程
演变一
① => C# 利用RSA加密算法对账号密码进行加密,POST请求到Java后端,(加密算法的参数是用公钥进行加密的)
② => Java后端接收之后先把接收的数据处理一下(坑)(前后端传输的时候存在转义字符,转义字符是自动变成空格,我接触到的是+号,还有很多比如 ( [ { / ^ - $ ¦ } ] ) ? * + . )
③ => 字符串转换之后,再利用RSA解密算法(解密算法的参数是用私钥进行解密的)
④ => 解密之后剩下的就是常规操作了
演变二
① => 问题来了:难道是什么时候都可以请求 后端服务接口吗,总有一天会被黑客破解掉 然后干倒我们的!
② => 时间戳校验失效机制上场了。
③ => 通过获取(后端)当前时间戳函数——前端传过去的时间戳函数=失效时间
④ => 我这里的失效时间是5秒中,5秒钟不发生响应我就认为失效了,你必须重新请求 System.currentTimeMillis() - time > 1 * 50 * 1000
演变三
兜兜转转,我们好像遗留了最初的问题!接口身份!为什么可以访问?
① => Token身份验证出来了。为什么要把Token放在这里输出呢,因为我这是CS端的Token,意思也就是说,Token的用处是 验证登录之后的请求是否被后端允许,而不是第一次。
② => 这里是一大堆验证成功之后,我会把Token放在json里发给前端。然后以供前端下次请求应用
String jsonConcat=JsonUnit.JSONMain(1,UUID.randomUUID().toString(),merchant,1);
演变四
最后一步,也是这里的大结局了!签名机制,验证以上信息是否被篡改
① =>我的操作流程就是通过客户端对账号密码和盐一系列的MD5加密,因为MD5是不可逆的,所以利用MD5来进行签名验证是最合适不过了。
②=> 客户端请求API发送的签名参数到后端。举一个秘钥的例子,这个就是通过加密算法生成的{e3e7a8a0c40f3629e87072ae237e3acd},到底和谁比较呢?
③ => 前端传递的账号,密码用公钥RSA加密过后的密文,后端通过私钥进行RSA解密,解密之后再进行账号密码盐的拼接进行MD5进行加密
④ => 到了这一步估计大家都懂了。也就是后端RSA解密的信息重新加密和前端的签名数据进行比较!
这个项目设计到跨国业务,收费项目,无法公布太多,抱歉!
总结
如果以上信息听的有点糊里糊涂的,可以学习一下我之前整理的HTTPS底层原理!完美的解释了浏览器的所有的访问流程以及原理!
以上问题有不懂的私聊 给你一一解答
知道的越多,不知道的就越多。找准方向,坚持自己的定位!加油向前不断前行,终会有柳暗花明的一天!
创作不易,你们的支持就是对我最大认可!
文章将持续更新,我们下期见! 微信公众号搜索【欢少的成长之路】请多多支持!