APP接口安全设计
2016-12-06 19:05
232 查看
APP接口安全是APP接口设计中一个很重要的环节,良好的安全机制可以保护后端接口服务不被非法使用,限制和跟踪用户访问情况。下面是笔者从网上查找一些资料并结合公司实际业务设计的一个APP安全调用时序图,欢迎大家拍砖,以改良该设计。
![](https://static.oschina.net/uploads/img/201612/06184510_uZYm.png)
该方案分两部分(公司产品需求):
1.需要认证的接口
2.不需要认证的接口
需要认证的接口在用户登录时,将根据传入的
在调用不需要认证的接口时,由于无法对
方案二中的
![](https://static.oschina.net/uploads/img/201612/06184510_uZYm.png)
该方案分两部分(公司产品需求):
1.需要认证的接口
2.不需要认证的接口
需要认证的接口在用户登录时,将根据传入的
app_key,生成对应的
app_secret,并返回给客户端,客户端将存储该
app_secret值。后续请求时,将
app_key和由
md5(app_key + timestamp + app_secret)生产的签名写入请求消息头中,传递到服务器端,由服务器端进行校验,由于本案使用
Openresty构建了接口网关,所以签名校验动作将在该网关中完成,如果签名校验成功,则将请求转发到后端服务器,否则将返回签名错误响应。
在调用不需要认证的接口时,由于无法对
app_key进行确认,所以只是简单的根据
app_key生成一个
ticket,返回给客户端,客户端请求时将在请求消息头中携带该
ticket值,服务器端进行简单校验(
ticket是否确实由服务端签发)。该方案当然无法真正做到接口安全,毕竟没有建立信任机制,
app_key完全可以伪造。但结合公司实际业务,有两个原因,可以接受这一方案。原因一,公司产品绝大部分业务场景是要求登录的,免登请求只限于很少一部分展示类的请求,接口被恶意利用的意义不大。原因二,由于免登请求有限,所以在服务器端建立白名单机制,白名单上列出所有免登接口URI,限定免登机制的影响范围,防止非法用户恶意修改重要业务数据。
方案二中的
ticket并不设置过期时间,因为可以重复获取
ticket,所以设置过期意义不大,用户在至少一次登录后,由于服务端有签发密钥,这时
ticket将被清除,在客户端已获取密钥的情况下,服务端将不再接收基于
ticket机制的接口请求,全部接口请求将走签名机制。
相关文章推荐
- APP接口设计安全问题
- App架构设计经验谈:接口”安全机制”的设计
- APP接口设计安全问题
- App的登陆注册接口安全设计
- 设计基于HTML5的APP登录功能及安全调用接口的方式(原理篇)
- APP接口设计安全问题
- App架构设计经验谈:接口”安全机制”的设计
- 设计基于HTML5的APP登录功能及安全调用接口的方式(原理篇)
- APP接口安全token设计
- 设计基于HTML5的APP登录功能及安全调用接口的方式(原理篇)
- APP接口设计安全问题
- 设计基于HTML5的APP登录功能及安全调用接口的方式(原理篇)
- Java版本APP接口安全设计
- APP接口设计安全问题-app接口鉴权
- 设计基于HTML5的APP登录功能及安全调用接口的方式(原理篇)
- APP接口安全设计
- APP接口的安全设计