一:https保证通道安全
二:下发token保证无登录的用户不能随意调用服务
三:token有过期时间,保证服务不被长期木马攻击
四:对于支付等安全功能,需要另外增加支付密码校验和短信验证
五:应用层内做自己的安全协议(对称、非对称、打包证书等等)
移动app通过post请求调用服务器的api接口,为了确保服务器的数据安全和通讯安全,防止数据篡改等恶意攻击,本人通过查询资料和思考,总结出了一个方案,个人认为能解决
基本的接口调用安全问题,具体方案如下。
首先,移动端通过访问公开接口与服务器通讯,使用用户名和密码(当然是MD5加密)作为参数向服务器申请TOKEN,服务器获取用户名和密码,服务器端判断该用户是否法,如果合法,服务端为移动APP应用分配APPID (32位随机字串)以及TOKEN(32位随机字串)同时服务器保存APPID和TOKEN,当然根据应用的不同,服务器可以为该TOKEN(建立有效期如3600s)后台就要建立触发器或者自动作业销毁token。 移动端收到APPID和TOKEN进行存储,同时返回给用户与服务器建立连接成功等提示信息。之后,移动端请求其他功能接口,接口参数中要增加APPID和TOKEN,其接口格式如下:method(APPID, Token,…其他参数),服务器首先验证token是否有效,进行数据服务完成之后如果token为临时有效,应重新修改有效期时间起点为调用时刻。
最后,APP一直没有访问服务端,如token永久有效,则没有后续操作,若token为临时有效,token过了有效期,验证无法通过则通知用户访问相应接口,重新获取验证token。该方案其实是两步验证,其实对于一般应用,在用户注册的时候,可以同时为用户生成永久验证Token,用户在使用APP进行调用服务端API的时候,将该Token配置到系统中,这样就可以防止恶意用户直接通过访问post请求对服务端的数据造成安全隐患。