前面讲过:移动端与PHP服务端接口通信流程设计(基础版)

对于 api_token 的校验,其安全性还可再增强:

增强地方一:

再增加2张表,一个接口表,一个授权表,设计参考如下:

接口表

字段名 字段类型 注释
api_id int 接口ID
api_name varchar(120) 接口名,以"/"作为分割线,如 blog/Index/addBlog
api_domain varchar(256) 所属领域
is_enabled tinyint(1) 是否可用  1:可用 0:不可用
add_time int 添加时间(戳)

(注:只列出了核心字段,其它的再扩展吧!!!)

授权表

字段名 字段类型 注释
client_id int 客户端ID
api_id int api编号
api_name varchar(120) 接口名,以"/"作为分割线,如 blog/Index/addBlog
is_enabled tinyint(1) 是否可用  1:可用 0:不可用
add_time int 添加时间(戳)
expire_time int 过期时间(戳)

(注:只列出了核心字段,其它的再扩展吧!!!)

执行过程如下:

1、移动端与服务端生成的 api_token 进行对比,如果不相等,则直接返回错误,否则,进入下一步;

2、根据接口URL,组装 api_name,再加上客户端传回的 client_id 为参数,查找 “授权表”记录,如果记录存在,且有效(是否可用,是否过期),则表示权限验证通过,返回接口数据,否则返回错误信息;

增强地方二:

对于一些很特殊的接口,怎么特殊,哪些算特殊,我也不知道,总而言之,就是感觉http请求有可能被劫取,传递参数有可能被窜改等情况,还是举个例子来说吧:

有个直接转账接口,页面上 我输入的是5元,表示我要给对方某某转账5元,结果在http传递过程中,被人劫取并窜改成了 10000元,而且入账对象改成了“黑客”的账号,那不是亏大发了,思考了一下,应该有2种方案解决这个问题,

方案一:走https,这个就不多说,比较公认的安全机制;

方案二:走数字签名,实现原理如下:

一个http请求,假如需要传递如下3个参数

参数名1=参数值1

参数名2=参数值2

参数名3=参数值3

我们可以再追加一个参数,该参数的名为 identity_key (名字是什么不重要),该参数的值为 前几个参数值按顺序相加,再加密后的结果。

即:

identity_key = md5('参数值1' + '参数值2' + '参数值3' + '加密密钥');

于是,最终传递的参数有:

参数名1=参数值1

参数名2=参数值2

参数名3=参数值3

client_id=client_id值

identity_key=md5('参数值1' + '参数值2' + '参数值3'+ 'client_id值' + '加密密钥')

服务端接到参数后,再按相同的加密规则重新生成一份 identity_key,服务端的identity_key和客户端的identity_key 进行校对,如果不相等,表示被窜改过,接下来怎么操作,自己看着办吧!

移动端与PHP服务端接口通信流程设计(增强版)的更多相关文章

  1. 移动端与PHP服务端接口通信流程设计(增强版)

    增强地方一: 再增加2张表,一个接口表,一个授权表,设计参考如下: 接口表 字段名 字段类型 注释 api_id int 接口ID api_name varchar(120) 接口名,以"/ ...

  2. 移动端与PHP服务端接口通信流程设计(基础版)

    转载自:http://blog.snsgou.com/post-766.html --->非开放性平台 --->公司内部产品 接口特点汇总: 1.因为是非开放性的,所以所有的接口都是封闭的 ...

  3. 移动端与PHP服务端接口通信流程设计(基础版)

    针对 --->非开放性平台 --->公司内部产品 接口特点汇总: 1.因为是非开放性的,所以所有的接口都是封闭的,只对公司内部的产品有效: 2.因为是非开放性的,所以OAuth那套协议是行 ...

  4. api服务端接口安全

    api服务端接口安全性解析 http://blog.csdn.net/tenfyguo/article/details/8225279 常用的基于token的实现方案 http://blog.csdn ...

  5. 【规范建议】服务端接口返回字段类型与iOS端的解析

    一.本文档的写作目的 App需要跟产品.UI.后台.服务器.测试打交道,app的产出是其他端人员产出的综合体现.与其他端人员沟通就像是开发写接口,也就是面向接口编程的思想. 本文档讲解针对的是服务端返 ...

  6. 基于CXF框架下的SOAP Webservice服务端接口开发

    最近对webservice 进行入门学习,网上也是找了很多的学习资料.总得感觉就是这了解点,那了解点.感觉不够系统,不够容易入门.差不多断断续续看了一个星期了,今天小有成果,把客户端,服务端都搞定了. ...

  7. App架构设计经验谈:服务端接口的设计

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

  8. app微信支付-java服务端接口 支付-查询-退款

    个人不怎么看得懂微信的文档,看了很多前辈的写法,终于调通了,在这里做一下记录. 首先来定义各种处理类(微信支付不需要特殊jar包,很多处理需要自己封装,当然也可以自己写完打个jar包) 参数要用jdo ...

  9. springboot(服务端接口)获取URL请求参数的几种方法

    原文地址:http://www.cnblogs.com/xiaoxi/p/5695783.html 一.下面为7种服务端获取前端传过来的参数的方法  常用的方法为:@RequestParam和@Req ...

随机推荐

  1. js+json实现ajax实例

    前期准备: 安装wampserver或者其他相似软件来搭建本地集成安装环境 html.js.css等文件需要放置在wampserver中的www目录中,默认运行index页面 bootstrap.cs ...

  2. Ant Design 使用小结

    最近公司做了一个系统,因为页面涉及的表单交互非常多,如果使用之前的 Node + Express 的开发模式效率是非常低的,因此经过考虑,最后决定使用 Node + React 的开发模式,并且使用了 ...

  3. spring结合Mybatis的框架搭建(一)

    一:前沿 2015年新年上班的第二天,第一天就打了一天的酱油哦,只是下午开始搭建自己毕业设计的框架,搭建的是spring+spring mvc+MyBatis的框架.今天遇到了一个问题,结果弄了我一天 ...

  4. POST提交数据太大

    2018.4.8号更新 其实后来最终的解决方案是修改服务器的配置文件. POST数据按道理说是没有大小限制的,只是取决于浏览器或服务器的配置,tomcat的解决方式参考方案2. ----------- ...

  5. 【Foreign】划分序列 [线段树][DP]

    划分序列 Time Limit: 20 Sec  Memory Limit: 256 MB Description Input Output 仅一行一个整数表示答案. Sample Input 9 4 ...

  6. AtCoder Regular Contest 092 C D E F

    C - 2D Plane 2N Points 题意 二维平面上有\(N\)个红点,\(N\)个蓝点,一个红点和一个蓝点能配成一对当且仅当\(x_r<x_b\)且\(y_r<y_b\). 问 ...

  7. SEH

    @author: dlive SEH是Windows的异常处理机制,在程序源代码中使用__try,__catch,__finally关键字来具体实现. 但SEH与C++的try, catch异常处理不 ...

  8. [Leetcode Week10]Minimum Time Difference

    Minimum Time Difference 题解 原创文章,拒绝转载 题目来源:https://leetcode.com/problems/minimum-time-difference/desc ...

  9. Objective-C中ORM的运用:实体对象和字典的相互自动转换

    http://blog.csdn.net/cooldragon/article/details/18991973 iOS开发中基于ORM的框架很多,如SQLitePersistentObject,实际 ...

  10. PL/SQL 06 函数 function

    --函数 create or replace function  函数名称(参数1 类型1,参数2 类型2,...)  return 数据类型as  变量.常量声明;begin  代码;end; cr ...