文档章节

APP接口安全设计

一别丶经年
 一别丶经年
发布于 2016/12/06 19:05
字数 640
阅读 320
收藏 8

APP接口安全是APP接口设计中一个很重要的环节,良好的安全机制可以保护后端接口服务不被非法使用,限制和跟踪用户访问情况。下面是笔者从网上查找一些资料并结合公司实际业务设计的一个APP安全调用时序图,欢迎大家拍砖,以改良该设计。 设计图

该方案分两部分(公司产品需求):
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机制的接口请求,全部接口请求将走签名机制。

© 著作权归作者所有

共有 人打赏支持
上一篇: MyBatis学习笔记
下一篇: 理解HTTP幂等性
一别丶经年
粉丝 25
博文 36
码字总数 56401
作品 0
徐汇
架构师
私信 提问
App架构设计经验谈:接口的设计

App架构设计经验谈:接口的设计 App架构设计经验谈:技术选型 App架构设计经验谈:数据层的设计 App架构设计经验谈:业务层的设计 App架构设计经验谈:展示层的设计 App与服务器的通信接口如何设计...

chaun
2016/04/29
193
1
App开放接口api安全性的设计与实现

App开放接口api安全性的设计与实现 Posted on 2016-09-29 11:49 琪齐 阅读(4121) 评论(0) 编辑 收藏 阅读目录 导航 公告 App开放接口api安全性的设计与实现 前言 设计   1、原理   2、具...

蜗牛奔跑
2017/11/01
0
0
App架构设计经验谈:接口的设计

App与服务器的通信接口如何设计得好,需要考虑的地方挺多的,在此根据我的一些经验做一些总结分享,旨在抛砖引玉。 安全机制的设计 现在,大部分App的接口都采用RESTful架构,RESTFul最重要的...

奋斗的小菜一碟
2016/05/24
246
0
Web API系列(二)接口安全和参数校验

  以前简单介绍过web api 的设计,但是还是有很多朋友问我,如何合理的设计和实现web api。比如,接口安全,异常处理,统一数据返回等问题。所以有必要系统的总结总结 web api 的设计和实现...

章为忠
2016/12/20
0
0
app后端设计--总目录

做了3年app相关的系统架构,api设计,先后在3个创业公司中工作,经历过手机网页端,android客户端,iphone客户端,现就职于app云后端平台bmob(想了解bmob点击这里)。其中的乐与苦,得与失,...

云栖希望。
2017/12/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

聊聊flink的Async I/O

序 本文主要研究一下flink的Async I/O 实例 // This example implements the asynchronous request and callback with Futures that have the// interface of Java 8's futures (which is t......

go4it
14分钟前
0
0
一文详解微服务架构的数据设计

微服务是一个软件架构模式,对微服务的讨论大多集中在容器或其他技术是否能很好的实施微服务这些方面。 本文将从以下几个角度来和大家分享在微服务架构下进行数据设计需要关注的地方,旨在帮...

java菜分享
24分钟前
2
0
Java并发编程之美读书笔记-并发编程基础1

线程 进程是代码在数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,比如idea运行代码时的jvm是一个进程,但是CPU资源比较特殊,它是被分配到线程的,线程是进程的一个执行路...

hensemlee
37分钟前
1
0
【剑指offer纪念版】--10 进制1的个数

10. 题目 题目:请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。例如把9表示成二进制是1001,有2位是1。因此如果输入9,该函数输出2。 解题思路   把一个整数减去1,再和原整...

细节探索者
52分钟前
2
0
本科毕业平均年薪 30 万!经济寒冬挡不住 AI 人才的火热!

互联网行业遭遇寒冬,企业纷纷裁员缩招,而 BAT 和硅谷明星公司对 AI 人才的投入却并不见放缓。为争夺相关人才,给应届毕业生开出的平均年薪高达 30 万。 而 TensorFlow 作为当下最流行的深度...

AI女神
58分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部