app接口设计之signature签名的php实现

ps:本人亲测,阿里云2核4G5M的服务器性价比很高,新用户一块多一天,老用户三块多一天,最高可以买三年,感兴趣的可以戳一下:阿里云折扣服务器

1、首先说一句什么是接口:接口简单来说就是服务器端用来返回给其他程序或者客户端数据的桥梁

2、接口的作用:根据固定参数返回固定数据,比如客户端传a=1,那么服务器端返回a的姓名,客户端传a=2,服务器端返回a的性别,而不会返回其他数据。

3、signature签名的作用:保证接口与数据的安全

4、token的作用:和PC登陆的session一样,作为用户进入的唯一票据

例如:app与服务器端的接口、java与php之间不同程序的接口,这些接口一般通过json格式传输数据

所以为了保证移动端和服务端数据传输相对安全,需要对接口进行加密传输

接口签名验证固定参数:接口签名验证固定参数是客户端调用所有接口时都需要传递的参数。用于接口版本管理(旧版本的安卓app依然可以使用)、安全校验等目的。os    String  客户端操作系统名称  例如"android", "ios"uuid  String  移动设备唯一标识符  例如安卓手机的IMEI,苹果手机的UUIDversion  String   客户端版本号   例如"1.0","2.0"(接口设计高版本接口要兼容低版本的接口)timestamp  long    客户端调用接口时的时间戳signature   String   客户端接口调用签名签名算法Ps: (可以根据实际变更其他算法使用)对除去signature外的所有参数,按参数名的字典顺序排序后计算sha1值。例如,某个接口的参数"mobile=18600933630&verifyCode=135466&os=android&uuid=GB1303EA&version=1.0&timestamp=1442067125464"a) 按参数名的字典顺序排序成  "mobile=18600933630os=androidtimestamp=1442067125464uuid=GB1303EAverifyCode=135466version=1.0"b) signature值为字符串"mobile=18600933630os=androidtimestamp=1442067125464uuid=GB1303EAverifyCode=135466version=1.0"的sha1值注意:简而言之,签名设计的原则就是保证服务器所接收到的数据是自己的APP端传过来的,而不是其他人非法调用的,在APP端给签名加密时需要加上特有固定参数,服务器也是加上特有固定参数,从而来保证一对一的传输,每个接口都需要调用该签名验证方法本项目实现签名及其验证的具体代码(php实现):(1)签名的验证方法代码:// $signtype 'yes':验证,'no':不验证public static function checkSign($args,$signature,$signtype = 'yes'){if($signtype == 'no')  //上线时去除该部分,必须验证签名{return true;}if(!$args || !$signature){return false;}if (time() - $args['timestamp'] > 300)  //同一签名调用时间限制{return false;}$args['xiaoming'] = 'wuyingqi431';  //特有固定参数ksort($args);  //按数组的键排序$sign = '';foreach($args as $k => $v){$sign .= $k . '=' . $v;}$sign = sha1($sign);  //加密if($sign == $signature){return true;}return false;}(2)签名验证方法调用(其他必须传的固定参数也需要加入到$args数组当中):$args = $res = array();
//下面是每个接口的参数(分为固定参数和不固定参数,固定参数必传)
$args['mobile'] = r_get('mobile');//下面是签名固定参数$args['os'] = $_POST['os'];$args['uuid'] = $_POST['uuid'];$args['version'] = $_POST['version'];$args['timestamp'] = $_POST['timestamp'];$signature = $_POST['signature'];$signtype = $_POST['signtype'];$check = appuser::checkSign($args,$signature,$signtype);if(!$check){$res['msg_code'] = 99999; //签名错误v_json($res);}

app接口设计之signature签名的php实现相关推荐

  1. 某音乐App 抓包和signature签名分析

    一.目标 李老板:奋飞呀,最近我想下个歌,现在听歌软件都这么顽固了,包都抓不到? 奋飞:抓不到包的原因太多了,咱们得用排除法分析下. 某音乐App 10.8.4 二.步骤 排查协议 李老板也跟我们混了 ...

  2. APP架构设计经验谈:接口的设计

    APP架构设计经验谈:接口的设计 原创文章,转载请注明:转载自Keegan小钢并标明原文链接:http://keeganlee.me/post/architecture/20160107微信订阅号:k ...

  3. C# 微信JS-SDK之config接口注入权限验证invalid signature签名错误

    文章目录 1.开发环境 2.我的代码 3.问题描述 4.问题分析 5.问题根源 6.解决办法 记一次使用微信JS-SDK分享接口,config接口注入权限验证失败, 提示invalid signatu ...

  4. 接口设计中,如何封装对json格式的数据签名

    目录 一.背景介绍 二.遇到的问题 三.解决方案 1.设计一个HttpServletRequestWrapper 2.设计一个filter 四.其他辅助设计 1.定义一个注解 2.定义一个拦截器 一. ...

  5. 腾讯技术分享:微服务接口设计原则

    来源|腾讯技术工程(ID:Tencent_TEG) 本文结合自身后台开发经验,从高可用.高性能.易维护和低风险(安全)角度出发,尝试总结业界常见微服务接口设计原则,帮助大家设计出优秀的微服务. 1.前 ...

  6. API的 Signature(签名)Token(令牌) 认证

    2019独角兽企业重金招聘Python工程师标准>>> Signature认证 一次性的身份校验方式,常见于不同项目间的api通信 一般形式是通过 AppID/AppSecret 及 ...

  7. PHP:APP接口开发

    环境简介 LNMP 1.Linux 2.Nginx 3.MySQL 4.PHP APP接口 客户端与服务端数据的交换 HTTP通讯三要素 1.URL 地址 2.Method 方式 3.Params 内 ...

  8. JAVA接口设计篇:这些都不知道,别说你懂接口设计

    背景 昨天测试提醒有个功能报错了,我看了下,发现接口有过更新. 然后顺便问了下开发同学,确实有更新. 他们的更新是把现有的接口进行了修改. 导致返回的数据结构变更了,以至于接口直接报错. 其实负责后端 ...

  9. 基于android的生日小助手,毕业答辩-基于Android的生日管家App的设计与实现

    基于Android的生日管家软件 绪论 总结 软件设计和实现 目录 数据库 后台设计和实现 课题要解决的问题 课题来源和价值 我的App与市面上App对比 随着社会的发展 生活节奏加快 工作繁忙的商务 ...

最新文章

  1. word2vec应用场景_Embedding在腾讯应用宝的推荐实践
  2. 前松后紧和前紧后松——想起PM的点滴
  3. struts2标签集
  4. 今天的编程语言是怎么来的?
  5. CUBA平台–新的Java企业应用程序框架
  6. java程会释放锁join_关于join() 是否会释放锁的一些思考
  7. Linux io内存存在的意义~
  8. Flink 1.12 CDH 6.3 集成
  9. abstract类中不可以有private的成员_C++中public、protected、private的区别
  10. 玩转Spring——Spring IOC/DI
  11. 使用TensorFlow.js的AI聊天机器人一:检测文本中的情绪
  12. Android Studio 利用系统签名打包apk
  13. 微信小程序的开发流程有哪些?
  14. linux中的rar文件怎么打开方式,linux下怎么解压缩rar文件教程
  15. 05流量管理原理-3金丝雀TCP流量整形比例分配
  16. 图像处理/计算机视觉/python环境下如何用滤波器、算法恢复图片,对图片去污【附代码】
  17. java如何枚举定义一个数组_Java中如何将字符枚举类变成一个数组
  18. 我的新博客地址https://xmmup.com
  19. 莫烦pytorch CNN卷积神经网络
  20. 仁慈的独裁者——Python之父吉多·范罗苏姆

热门文章

  1. Qt使用漂亮的图标和字体(Font Awesome)————附代码实例
  2. APP逆向案例之(二)对加固APP进行分析和破解
  3. 算法的时间复杂度到底怎么算?
  4. 微信小游戏实现语音识别(超详细)
  5. 服务器项目迁移本地,云服务器迁移本地
  6. 腾讯前端面试经验(一)
  7. 万能应用市场删除后台自动安装
  8. BMA250三轴加速度传感器(部分翻译)
  9. 生鲜配送管理系统软件让生鲜产品一路“鲜”到家!
  10. Python使用 matplotlib的basemap绘图之一--几行代码画世界地图和中国地图