您当前的位置:首页 > 电脑百科 > 程序开发 > 移动端 > APP

如何保证APP与API通信安全,TOKEN冒用带来的风险很大?

时间:2021-02-18 11:14:10  来源:  作者:

TOKEN作为用户身份凭证并不能保证数据安全,别人通过抓包等方式很容易拿到TOKEN,带上TOKEN请求我们的API接口就能获取数据;其实换一个角度想:我们只需保证即使TOKEN被别人冒用,也不能调用我们API接口就行。

分享一个前后端使用AES和RSA混合加密通信的方案。

AES对称加密

首先看一下AES加密的示意图:

加密过程为:发送方(App)使用密钥对参数明文进行AES加密获得密文,然后将密文和密钥一起发给接收方(服务端),接收方使用密钥对密文进行AES解密,得到参数明文。

AES由于是对称加密算法,特点就是加解密运算速度快;由于加解密使用的是同一个密钥,所以缺点就是在传输过程中会存在密钥泄露的风险。

RSA非对称加密

同样的,先来看一下RSA加密的示意图:

首先接收方(服务端)生成一对RSA密钥(公钥、私钥),私钥自己保存同时公钥公布给发送方(APP)。

加密过程:发送方使用接收方公钥将参数明文进行RSA加密得到密文,并将密文发送给接收方,接收方使用自己的私钥对密文进行RSA解密得到参数明文。

同样的,服务端返回数据给APP时也可以使用私钥对数据进行签名,APP可以使用服务端的公钥来验证签名,从而判断数据是否来自合法的服务端。

RSA是非对称加密算法,加解密大量数据速度较慢,但由于加解密使用不同的密钥,所以安全度较高。

介于这两种加密方式各有优缺点,所以前后端加密通信方案通常采用AES对称加密算法对参数进行加密,RSA非对称加密算法则只用来对AES密钥进行加密,两种加密方式混合使用既不会太影响通信速度,又保证了通信安全。

为了防止重放攻击,我们还需要在AES+RSA混合加密的基础上再加入时间戳、随机字符串以及数字签名等校验逻辑。

为了防止中间人攻击,首先HTTPS是必须的,除此之外前后端还需要互相进行身份认证,确保通信没有被劫持。

前后端加密通信完整流程

准备工作:服务端生成RSA密钥对(公钥、私钥),公钥下发给APP,自己持有私钥;APP也需要生成RSA密钥对(公钥、私钥),公钥上传到服务端保存、私钥自己保留。

首先展示一下我用代码实现的前后端完整的加解密通信流程:

首先讲一下APP调用接口时的加密流程:

  1. 随机生成一个AES加密算法的密钥,用于后续加密;
  2. 使用服务端的RSA公钥对步骤1中生成的AES密钥明文进行RSA加密生成密钥密文;
  3. 使用AES密钥明文对参数明文进行AES加密生成参数密文;
  4. 生成当前时间的时间戳;
  5. 生成一串随机字符串;
  6. 将参数密文、AES密钥密文、时间戳、随机字符串进行MD5计算,得到md5值;
  7. 使用APP自己的RSA私钥对md5值签名,得到签名值;
  8. 最后将参数密文、AES密钥密文、时间戳、随机字符串、签名值一起发送到服务端;

 

再来讲一下服务端收到请求后的解密流程:

  1. 对比请求参数中时间戳与服务器端获取的当前时间戳,判断两者差值是否在一定的时间之内,超过则认为请求过期;
  2. 从系统缓存中查找参数中随机字符串是否已存在,如果已存在则认为是一次重复请求,不存在则将该随机字符串放入缓存;
  3. 将参数密文、AES密钥密文、时间戳、随机字符串进行MD5计算,得到md5值
  4. 使用客户端上传的RSA公钥验证参数中的签名是否来自合法授权的客户端,防止非法客户端篡改数据;
  5. 使用自己的RSA私钥解密AES密钥密文,得到AES明文密钥;
  6. 使用AES明文密钥解密参数密文得到参数明文;
  7. 进行正常的业务处理流程;
  8. 返回数据加密流程与客户端加密流程一致;

总结

要保证APP与API通信安全,首先要使用HTTPS协议,同时前后端还需要使用AES+RSA混合加密的方式来对数据进行加密,另外为了防止重放攻击、中间人攻击,还需要在数据加密的基础上加入时间戳、随机字符串以及数字签名等校验手段进一步提高通信的安全性。



Tags:APP API   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
TOKEN作为用户身份凭证并不能保证数据安全,别人通过抓包等方式很容易拿到TOKEN,带上TOKEN请求我们的API接口就能获取数据;其实换一个角度想:我们只需保证即使TOKEN被别人冒用,也...【详细内容】
2021-02-18  Tags: APP API  点击:(229)  评论:(0)  加入收藏
▌简易百科推荐
  1、明确产品的需求分析+功能  这是最基本的也是第一步,我们要明确自己或者客户真的想要开发一款app应用,其次就要了解到底要开发什么功能什么类别和种类的app应用。所...【详细内容】
2021-12-27  木子科技    Tags:App   点击:(1)  评论:(0)  加入收藏
前言目前,即时通讯在app中逐渐成了不可或缺的功能,尤其是在疫情期间,音视频会议功能更是火了一把,但是想自己开发即时通讯功能,却一点都不简单,如果用原生开发的话,那么Android、iO...【详细内容】
2021-07-29  中控易动    Tags:APP   点击:(104)  评论:(0)  加入收藏
本篇博文将会提供一个关于如何使用WebRTC建立一个视频会议App的教程。我们不会将其设计的太复杂,它将会是一个简单的一对一视频会议App,并且仅仅使用了WebRTC APIs和一些其他...【详细内容】
2021-07-29  易简视源云会议    Tags:视频会议App   点击:(113)  评论:(0)  加入收藏
开发一款app需要多少钱?这是一个比较笼统的问题,没有确切的需求,拥有不同技术经验的团队往往报价都各不相同,因为不知道开发需求,所以无法给出一个准确的价格。因此,想知道app开发...【详细内容】
2021-07-13  hey衡道    Tags:app   点击:(79)  评论:(0)  加入收藏
Hybrid APP指的是半原生半Web的混合类App。需要下载安装,看上去类似Native App,但只有很少的UI Web View,访问的内容是 Web 。 原生是Native APP,H5就是Web App在Hybrid 当中,如...【详细内容】
2021-04-28  扣丁学堂  今日头条  Tags:APP页面   点击:(289)  评论:(0)  加入收藏
介绍MIP(Mobile Instant Pages - 移动网页加速器),是一套应用于移动网页的开放性技术标准。通过提供 MIP-HTML 规范、MIP-JS 运行环境以及 MIP-Cache 页面缓存系统,实现移动网页...【详细内容】
2021-04-12  爱分享Coder  今日头条  Tags:WebApp   点击:(309)  评论:(0)  加入收藏
在开发直播APP时,核心要素和基本要素是稳定性,一般各大服务商都有提供demo,并且可以免费测试的,测试可以初步评估下稳定性,看看视频流畅度如何,卡顿是不是很频繁,延时效果怎么样,视...【详细内容】
2021-03-19      Tags:直播APP   点击:(292)  评论:(0)  加入收藏
TOKEN作为用户身份凭证并不能保证数据安全,别人通过抓包等方式很容易拿到TOKEN,带上TOKEN请求我们的API接口就能获取数据;其实换一个角度想:我们只需保证即使TOKEN被别人冒用,也...【详细内容】
2021-02-18      Tags:APP,API   点击:(229)  评论:(0)  加入收藏
在当今移动互联网盛行的时代,网络的形态除了有线连接,还有2G/3G/4G/5G/WiFi等多种手机网络连接方式。不同的协议、不同的制式、不同的速率,使移动应用运行的场景更加丰富。目前...【详细内容】
2021-02-05      Tags:APP   点击:(201)  评论:(0)  加入收藏
虽然目前许多企业都进行了长沙APP开发,开始了移动互联网转型之路,但由于其中绝大部分企业都属于传统行业,对APP应用了解并不多,故而对开发工作也不是很清楚。为了大家能更好的了...【详细内容】
2021-02-01      Tags:APP应用   点击:(214)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条