对服务器接口要有监控,监控到异常情况要有处理方案。
apk签名相当于程序的身份识别代码。
apk签名用于程序编译打包之后,手机在运行程序之前会先去验证程序的签名(可以看作类似于我们电脑上常说的md5)是否合法,只有通过了验证的文件才会被运行,所以签名软件的作用的让文件通过手机的验证为合法,不同的手机、系统是对应不同的签名的。
进行加密通讯防止API外部调用
服务器端与客户端各自会存储一个TOKEN,这个TOKEN我们为了防止反编译是用C语言来写的一个文件并做了加壳和混淆处理。
在客户端访问服务器API任何一个接口的时候,客户端需要带上一个特殊字段,这个字段就是签名signature,签名的生成方式为:
访问的接口名+时间戳+加密TOKEN 进行整体MD5,并且客户端将本地的时间戳作为明文参数提交到服务器
服务器首先会验证这两个参数:验证时间戳,如果时间误差与服务器超过正负一分钟,服务器会拒绝访问(防止被抓包重复请求服务器,正负一分钟是防止时间误差,参数可调整),
然后服务器会根据请求的API地址和提交过来的时间戳再加上本地存储的token按照MD5重新生成一个签名,并比对签名,签名一致才会通过服务器的验证,进入到下一步的API逻辑
服务器和app之间通过接口来访问,主要有2点作用。1、app客户端太大,不利于复用。
如果没有接口,app客户端是可以直接请求数据的,这个是可以做到,但是相当于接口的全部工作在app端写了,这样会造成app端比较大。比如,访问数据库的代码,Android要写,iOS也要写,太不利于复用。高质量代码的标准是可维护、可复用、可扩展、灵活性高。所以,如果有了接口,接口就可以对数据进行封装和业务处理,然后给app端。
2、不利于数据库安全。
接口可以把关安全性。因为客户端在客户手里,可以破解,可以反编译,整个架构下,
整个客户端都是V,数据库直接暴漏出来,别人可以扫描你的数据库端口,很危险。所以一般数据库,外部是不给访问的,你只能通过接口,而接口,会要求你登
录,登录后,根据你的身份。分配身份标记,再决定你能请求多少东西,每次请求都是由接口判断一次是否合法,就是根据SessionString,也可以是
cookie。其实cookie就是SessionString的ID。即使被破解,拿到一个,也是一个用户的数据被盗,其他用户不受影响。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)