关于APP与服务端通信数据安全的保障措施
对于前端app在与后台服务端交互过程中,如果不加相应措施,将很容易导致系统安全,稳定性方面的问题。如通信数据被抓包导致非法获取后端的数据,恶意攻击后端发出大量的无效请求导致后端服务瘫痪等。
对此,我们将针对不同的问题提出对应的解决方案。
- 防非法调用——身份认证
- 防抓包——数据加密
- 防重放攻击——时间戳+随机字符串
- 防篡改——签名机制
防非法调用——身份认证
身份认证是指只有经过合法授权的用户才能调用我们的接口,这里我们采用Token验证机制。
APP与服务端的整个通信过程如下:
详细流程如下:
- 用户首先需要输入账号密码进行登录;
- APP带上用户输入的账号密码请求服务端登录接口;
- 服务端校验账号密码,校验成功返回一个唯一Token作为用户身份凭证;
- APP将Token缓存,同时登录成功;
- 用户使用APP浏览数据,APP每次向服务端请求数据时须同时带上缓存的Token;
- 服务端收到请求,首先会校验Token的合法性,校验成功正常返回数据,校验失败直接返回错误;
Token验证机制解决了什么问题?
设想一个场景,我们检测到API接口正在被恶意调用,因为所有的接口都必须带Token才能调用,根据Token我们就能快速反查到对应的用户,所以Token验证机制可以帮助我们快速确定调用者的身份。
发现恶意调用,我们通过Token确定调用者的身份后可以采取Token失效、封禁帐号等措施来阻止恶意调用继续。
Token验证机制能防止抓包吗?
Token验证机制并不能防止APP被抓包,因为Token同样存在泄露的风险,恶意调用者只需要带上Token再请求我们的API接口同样还是能获取到数据。
因为APP与服务端都是明文通信,一抓包就能看到请求参数以及返回数据,所以为了防止被抓包我们必须要对数据进行加密处理。
防抓包——数据加密
数据加密的过程,就是对原来明文传输的数据按某种加密算法进行加密处理,使其成为不可读无意义的密文。
加密算法大体上可分为对称加密、非对称加密和散列算法等几种方式,后面我们的方案都会涉及到。
对称加密
对称加密是一种可逆的加密算法,其中“对称”的意思是加密过程和解密过程使用的是同一个密钥。