移动互联时代,APP项目开发需求项目市场越来越大,很多客户都希望对自己即将需要的APP平台有所了解,深圳APP开发公司在前面关于APP制作后台搭建文章中介绍了很多方法,今天我们接前面相关文章将我们APP开发工程师对于后台制作“APP通信安全”进行交流分享。
APP开发怎样注意App通信安全
在前篇相关文章中说过用户验证方案”中API请求的token有可能泄露,为了保证App通信的安全.我们可以采用下面介绍的保证App通信爱全的方法
(1)URL签名
在前文“用户验证方案”中,在App后台中验证用户名和密码都正确后,生成一个随机的不重复的token字符串(例如“daf32da456hfdh”),在Redis或Melncache中建立token字符串和用户信息的对应关系,例如把tokeu字符串“daf32da456hfdh”和用户id“5”对应,App后台把token字符串返回给App以作身份验证。
身份验证是依赖于tokeu字符串。如果用户泄露了自己的URL,那很大程度上tokeu也被别人泄露了。因此不在网络上传输token就能在很大程度上防止token泄露。不在网络上传输token的方案称为URL签名,过程如下:
注意:URL5名的万法是和上节“APP用尸验证方案”紧密联系,各位APP开发爱好者在阅读本节前请务必阅读上一节“用户验证方案”
(1) App后台中用户名和密码验证正确后,把token字符串和用户信息部返回给App,例如token字符串“daf32da456hfdh”和用户id“5”Redis中除了维护token字符串和用户信息的对应关系,还要维护用户id和token的对应关系,以方便后面App后台验证URL签名时快速查找。
(2)假设API请求为test. com/user/info , App用token产符串“daf32da456hfdh’和URL的md5值作为URL签名tsign。
于是API请求加上URL签名sign和用户id后如下所示。这样token就不需要附在URL。
(3) App后台接收到这个URL后,用(2)所描述的算法生成签名和sign参数对比,如果发现相等就表示验证通过,继续执行这个API的其
他逻辑。
URI,签名的验证流程如图3 4所示。
上述URL签名方法有个问题:因为API请求“test. com/user/iufo?userid=5&sigu=6dac4026135a123a3cf809alfibfid2a没有过期时间,假设黑客截获了这个API请求的URL.就能反复调用这个URL。改进方法是在传递的参数中增加时间戳,当App后台发现这个时间戳相隔当前时间很久的,就判断这个URL已经失效
App端使用时间戳的一个问题是:App端的时间有可能和App后台的时间不一致。保证App端时间和App后台时间同步的方法为:App每次启动时通过API获取App后台的时间,保存App端时间和App后台的时间差,以后App端用这个时间差调整其生成的时间戳。例如,某刻API获取App后台的时间是1444692778,App端时间是1444692775,两者的时间差是3。当App在本地时司l425860754准备同App后台发送API请求时,加上时间差3,即可得到App后台的时间为1425860754+3:1425860757,1425860757即为参数中传递的时间戳。根据以上的讨论得到下面的改进方法
(4)假设API请求为test. com/user/info,用toke字符串daf32da456hfdh和时间戳1425860757生成的md5值URL签名sign。
(5) App后台接收到这个API请求,如果收sicjn=md5("test.c_.m/user/inf_,?userid=5S,t:Len=dafn:da45,hfdhS,timfstamp=14:58e07s7")=rllEl01P.6F4n034?
EoC_ECF0850:Fin71到该API请求的时间和URL上时间戳的值1425860757比较(例如相隔了30s),可能意味着这个URL是黑客截取的用户请求,被黑客用来反复调用了,因此为了安全性,应该拒绝这个URL后续的业务逻辑。App后台认为时间合法,那就继续使用(
4)的算法判断sign是否致。
·当用户登录后,App后台返回给App的信息(包括token等个人信息)没加密,有被截取的风险。
·URL签名只能保护token值不泄露,但没法保护其他敏感数据,例如,当用户更新自己的个人信息时,所有的信息在传输过程中应该被加密。
·URL被黑客截获后还是能在段时间内调用(假设App后台认为有效的间隔时间是30s)。
使用前文AES对称加密”可以解决上面提出的3个问题。深圳APP开发公司博纳网络编辑整理。关于URL签名流程以及注意事项我们今天就分享到这里。在后期的文章中我们会对AES对称加密方法经验进行分享。