设计思想:以登陆接口为例

登陆安全接口设计

1.username = red_panda
2.password = 123456
3.时间戳  timestamp = 17988732

token = md5(api_md5(red_panda) + md5(123456) + md5(timestamp)_api);
service_token = md5(api_md5(red_panda) + md5(123456) + md5(timestamp)_api);
两个比较,如果不等。说明数据被篡改

问题:
1.防止大量访问  采用时间戳,time
2.防止修改数据 比对token
3.窃取信息  比如加密密码,自身加了md5,再接后缀pwd,再md5加密   md5(md5(123456)_pwd);

password = md5(md5(123456)_pwd)

代码如下:

1.共有common.php

<?phpnamespace app\api\controller;use think\Request;
use think\Controller;class Common extends Controller
{protected $request;  //用来处理参数protected function _initialize(){parent::_initialize();$this -> request = Request::instance();// 判断传过来的时间戳是否超时$this -> check_time($this->request->only(['time']));// 验证token$p = $this->request->param();$this -> check_token($this->request->param());}/*** [check_time 验证是否超时]* @param  [array] $arr [包含时间戳的参数数组]* @return [json]      [检测结果]*/public function check_time($arr){if (!isset($arr['time'])||intval($arr['time'])<=1 ) {$this->return_msg(400,'时间戳不正确');}if (time()-intval($arr['time'])>60) {$this->return_msg(400,'请求超时');}}/*** [check_token 验证token(防止数据被篡改)]* @param  [array] $arr [全部请求参数]* @return [json]      [token验证结果]*/public function check_token($arr){// api 传过来的 tokenif(!isset($arr['token'])||empty($arr['token'])) {$this ->return_msg(400,'token 不能为空');}// api 请求端的token $app_token = $arr['token'];   //api 传过来的token// 服务器端生成的 token  :先从参数中剔除tokenunset($arr['token']);$service_token = '';foreach ($arr as $key => $value) {$service_token .= md5($value);}$service_token = md5('api_' . $service_token . '_api');  //服务端生成的token// dump($service_token);// 对比token,返回结果if ($app_token !== $service_token) {$this -> return_msg(400,'token不正确');}}/*** [return_msg api数据返回]* @param  [int] $code [结果码 200:正常 / 4**:数据问题  5**:服务器问题]* @param  string $msg  [接口要返回的]* @param  [array] $data [接口要返回的数据]* @return [string]       [最终的json数据]*/public function return_msg($code,$msg='',$data=[]){/******** 组合数据 ********/$return_data['code'] = $code; $return_data['msg'] = $msg; $return_data['data'] = $data; /******** 返回信息并终止脚本 ********/echo json_encode($return_data);die;}
}

2.User.php  继承common.php

<?phpnamespace app\api\controller;use think\Controller;class User extends Common
{public function index(){echo "string.user/index..sssss<br/>";// dump($id);}public function login(){echo "user/login方法。。。。";}
}

tp5开发接口:接口安全设计相关推荐

  1. PHP_TP5框架开发后端接口(代码编写思路)

    这半个月断断续续在学习用PHP的ThinkPHP框架开发后端API.现在总结记录一下开发一个接口需要做好哪些事,以此提高开发效率,并且也有不错的扩展性. 一.流程概要 基本是这么一个流程,略过环境搭建 ...

  2. 后端php接口,PHP_TP5框架开发后端接口(代码编写思路)

    这半个月断断续续在学习用 PHP 的ThinkPHP框架开发后端API.现在总结记录一下开发一个接口需要做好哪些事,以此提高开发效率,并且也有不错的扩展性. 一.流程概要 基本是这么一个流程,略过环境 ...

  3. appcontroller.php,php用什么开发app接口

    可以使用 REST模式 来开发 App 接口,首先建立一个公共控制器,再建其他控制器继承它即可. 确定好返回的数据内容格式及信息码: (推荐学习:PHP视频教程)<?php // App接口公共 ...

  4. php开发app接口教学,php开发App接口

    接口是什么: 接口泛指实体把自己提供给外界的一种抽象化物(可以为另一实体),用以由内部操作分离出外部沟通方法,使其能被修改内部而不影响外界其他实体与其交互的方式. 人类与电脑等信息机器或人类与程序之间 ...

  5. PHP开发APP接口(二)

    这里将会调用前面博客的数据库连接单例.文件缓存类和开发APP接口(一) [php] view plain copy  print? <?php // http://app.com/list.ph ...

  6. Facebook最新Libra币开发指南---接口服务器开发2

    Facebook最新Libra币开发指南---接口服务器开发2 2019年06月24日 16:23:16 最老程序员闫涛 阅读数 1145 在上一篇博文中,我们已经使用Rust语言开发了一款简单的We ...

  7. php接口调用实例源代码,小蚂蚁学习APP接口开发(7)—— APP接口实例——读取缓存方式开发APP接口的代码案例...

    从数据库中直接读取数据,虽然时效性很强,但是对数据库造成很大压力,尤其是在高访问量的情况下.这时候可以通过缓存,来有效的缓解了这一压力,虽然时效性有些不足,但是服务器的抗压能力却达到了很大的提高. 读 ...

  8. IDEA中进行SpringBoot整合spring-ws开发webservice接口后期要修改xsd文件流程

    场景 SpringBoot整合spring-ws开发webservice接口(全流程详细教程) 参照: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/articl ...

  9. RESTful设计原则和样例(开发前后台接口)

    摘要 REST(表征性状态传输)设计风格;REST通常基于使用HTTP,URI协议和标准.使用URL标识资源,开发前后台接口.主要使用post,get方式 参考博文: http://www.cnblo ...

  10. 浅谈三个星期零基础入门学习Thinkphp5开发restful-api接口的心得和总结

    一丢丢心得体会: 首先不得不说一下,学习一门知识,真的就像建一栋高楼一样,地基必须的稳固,否则你辛辛苦苦建的楼可能随时会垮掉,这一点在我学习thinkphp5的路上深有体会,同时了自此我也爱上了写博客 ...

最新文章

  1. mysql主键更新被锁_MySQL 的加锁处理,你都了解的一清二楚了吗?
  2. 如何使用pFuzz以多种方法验证Web应用程序防火墙的安全性
  3. 2021牛客OI赛前集训营-提高组(第五场)D-牛牛的border【SAM】
  4. linux mysql timestamp_MySQL时间类型Timestamp和Datetime 的深入理解
  5. 机器视觉:嵌入式视觉系统中的接口
  6. python xlwings api_python xlwings API接口之NumberFormat用法
  7. 电子信息工程求职目标_广东海洋大学电子与信息工程学院电子信息工程专业欢迎你...
  8. WIBU-KEY加密狗驱动软件使用说明
  9. 人工智能机器学习————MINST数据集的简单处理
  10. delphi 获取当前路径
  11. 微信小程序开发工具格式化代码快捷键以及更改快捷键
  12. FSR402电阻式薄膜压力传感器
  13. 解决Linux系统不能上网问题
  14. 双十一,稳!2小时1000亿,阿里的技术露大脸了
  15. 应用系统报错:com.highgo.jdbc.util.PSQLException:bad value for long
  16. HTML设计简单的教务管理系统
  17. jQuery appendTo() 方法
  18. [Python]安装/升级pip/pip3
  19. 这可能是你近 2 年发论文最好机会!
  20. php new 图标,美化大前端DUX主题 - 新发布的文章加上NEW图标

热门文章

  1. 白杨SEO:小红书优化排名怎么做?小红书笔记排名规则有哪些?实战举例
  2. 25.类加载器实战剖析与疑难点解析
  3. Blockly Demo
  4. 获取执行计划——EXPLAN PLAN
  5. 关于golang的time包总结
  6. ESP32-C3入门教程 基础篇②——GPIO口输入,按键的长按和短按
  7. 【Java源码分析】String 方法 startsWith
  8. 虚拟机上nacos集群配置服务注册不上
  9. w10系统怎样打开计算机策略,win10组策略怎么打开
  10. 一个极好的适合新手的详细的Flask教程————《The Flask Mega Tutorial》