最近接触到了移动端API开发的问题,为了确保应用与API 服务器之间的安全通信,防止数据篡改等恶意攻击,和同事探讨出此验证方法:
首先向移动端应用分配APP_ID(int) ,APP_KEY(32位随机字串),移动端利用APP_ID 与 APP_KEY向服务器端请求,服务器端判断该应用是否合法;
应用合法则生成临时Token返回给移动应用(Token有效期默认3600s),服务器端存储该Token;
应用每次向接口请求数据都必须将Token与APP_ID一同请求,服务器端进行Token验证。
示例:
APP应用 ------请求指定接口(APP_ID,APP_KEY)获取Token-------->生成Token接口(首先判断Token是否存在,存在则直接返回,不存在创建后返回给应用)
APP应用 -------请求相应功能接口(APP_ID, Token,...其他参数)----->执行相应功能接口(Token有效期延长3600s)
APP应用--------获取Token一小时后请求--------------------------------->由于Token过期,验证无法通过,需调用相应接口重新请求新Token
这只是个简单的Api安全通信验证,对安全性要求较高的应用此验证方法还有很多不妥,如果大家有更好的API通信验证方法,欢迎吐嘈。