tp5开发接口:接口安全设计

news/2024/11/18 0:28:50/

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

登陆安全接口设计

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方法。。。。";}
}

 

 

 


http://www.ppmy.cn/news/720969.html

相关文章

tp6 防止XSS攻击之表单提交安全校验

对后端做安全措施&#xff1a;转化和过滤 首先&#xff1a;tp6框架已经自带转化危险标签 其次&#xff1a;使用tp6做过滤掉危险标签 安装 composer 安装插件来处理 composer require ezyang/htmlpurifier 安装成功以后在app下面的 common.php 放公共函数的地方添加如下代码 …

L2TP LAC initial 配置与安全策略

对于和NAS initial类似&#xff0c;这里是由LAC发起的&#xff0c;而且不是使用pppoe进行隧道的建立和会话的建立&#xff0c;当有去往总部的流量的时候&#xff0c;LAC就会主动和LNS进行隧道和会话的协商&#xff0c;LNS会分配给LAC一个地址&#xff0c;所以如果分支机构的用户…

L2TP详解(一)

今天继续给大家介绍HCIE安全。本文给大家介绍的是L2TP相关内容&#xff0c;包括L2TP的特点和应用场景。 一、L2TP简介 L2TP是一种二层的VPN技术&#xff0c;它提供了对PPP链路层数据帧的隧道传输支持&#xff0c;允许二层链路端点和PPP会话驻留在不同设备上&#xff0c;扩展了…

TP5学习(十二):安全

一、输入安全 设置public目录为唯一对外访问目录&#xff0c;不要把资源文件放入应用目录&#xff1b;开启表单令牌验证避免数据的重复提交&#xff0c;能起到CSRF防御作用&#xff1b;使用框架提供的请求变量获取方法&#xff08;Request类param方法及input助手函数&#xff…

毛概的笔记

简述毛泽东思想的活的灵魂。答&#xff1a;&#xff08;1&#xff09;贯穿于毛泽东思想各个组成部分的立场、观点和方法&#xff0c;是毛泽东思想的活的灵魂&#xff0c;它们有三个基本方面&#xff0c;即实事求是&#xff0c;群众路线&#xff0c;独立自主。&#xff08;2&…

TP5之安全机制

防止sql注入 1、查询条件尽量使用数组方式&#xff0c;具体如下&#xff1a; $wheres array();$wheres[account] $account;$wheres[password] $password;$User->where($wheres)->find(); 2、如果必须使用字符串&#xff0c;建议使用预处理机制&#xff0c;具体如下&…

ROS学习笔记 -day1入门学习

学习资料&#xff1a;https://sychaichangkun.gitbooks.io/ros-tutorial-icourse163/content/chapter1/ 1、Linux下的编译器&#xff1a;gcc/g , Makefile , Cmake , … ROS对Cmake进行拓展 — Catkin&#xff08;对cmake , make指令进行封装&#xff09; 2、Catkin编译与工作…

超低延迟高可靠

1. 超低延迟 1.1 解释 超低延迟通常指延迟至少低于10 ms&#xff0c;甚至低于1ms。 1.2 影响因素 1.2.1 传统因素 传播延迟&#xff1a;取决于路径长度&#xff1b;传输延迟&#xff1a;取决于数据包大小&#xff1b;排队延迟&#xff1a;取决于处理速度和到达速率&#x…