3.2安全方案
3.2.1数据加密
最简单的是使用HTTPS对APP和服务器的交互数据加密。
使用HTTP协议,但自己设计加密方案,加密方式有对称加密和非对称加密
对称(AES和DES)
非对称(RSA和ECC)
对称加密是加密解密用同样的“钥匙”,非对称加密加密解密用不同的“钥匙”,建议采用更安全的非对称加密方式。
3.2.2 APP访问鉴权
可以设计一个初始化请求命令,发送这个请求的时候,可以把APPCode或APPKey和发送请求的时间戳发送给服务器。
在每次启动APP连接服务器的时候,首先向服务器发送这个请求,服务器根据其中的APPCode或APPKey鉴权是否是合法的APP请求,只有鉴权通过了,服务器在接受APP后续发送的请求,且可以把服务器端的配置参数返回给APP。
APPCode和APPKey也可以用做判断是iOS APP或Android APP向服务器发送请求。
3.2.3 HTTP命令的使用
APP和服务器交互通常是使用HTTP协议,常用的命令是GET和POST:
GET命令的参数暴露在发送给服务器的URL里,且参数长度有限制。
POST命令的参数在HTTP请求的BODY体里,安全且长度没有限制。
从安全角度考虑,只要是带参数的请求,都应该使用POST命令。
APP向服务器发送的URL请求通常是如下格式:
http://+域名+/+其它+/+方法名
有比较极端的方法是把方法名也作为参数,加到BODY体里。
3.2.4密码的处理
APP向服务器发送密码的时候,应先对密码进行加密,然后再发送,之前已经提过需要对传输过程加密,这样相当于对密码进行了两次加密。
存储在本地或服务器端的密码也都是要加密后再存储。
3.2.5数据的存储
一些比较重要的数据,如支付宝和微信支付都会用到秘钥文件,这类文件最好存储在服务器端,不要存储在APP端。