广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >php api 安全验证失败怎么办
  • 747
分享到

php api 安全验证失败怎么办

php接口安全 2020-07-26 15:07:51 747人浏览 绘本
摘要

本文操作环境:windows7系统、PHP7.1、Dell G3。php api 安全验证失败怎么办?php的api接口在实际工作中,使用php写api接口是经常做的,PHP写好接口后,前台就可以通过链接获取接口提供的数据,而返回的数据一般

本文操作环境:windows7系统、PHP7.1、Dell G3。

php api 安全验证失败怎么办?

php的api接口

在实际工作中,使用phpapi接口是经常做的,PHP写好接口后,前台就可以通过链接获取接口提供的数据,而返回的数据一般分为两种情况,xml和JSON,在这个过程中,服务器并不知道,请求的来源是什么,有可能是别人非法调用我们的接口,获取数据,因此就要使用安全验证。

验证原理

示意图

这里写图片描述

原理

从图中可以看得很清楚,前台想要调用接口,需要使用几个参数生成签名。

  • 时间戳:当前时间
  • 随机数:随机生成的随机数
  • 口令:前后台开发时,一个双方都知道的标识,相当于暗号
  • 算法规则:商定好的运算规则,上面三个参数可以利用算法规则生成一个签名。

前台生成一个签名,当需要访问接口的时候,把时间戳,随机数,签名通过URL传递到后台。后台拿到时间戳,随机数后,通过一样的算法规则计算出签名,然后和传递过来的签名进行对比,一样的话,返回数据。

算法规则

在前后台交互中,算法规则是非常重要的,前后台都要通过算法规则计算出签名,至于规则怎么制定,看你怎么高兴怎么来。

我这个算法规则是

  • 时间戳,随机数,口令按照首字母大小写顺序排序

  • 然后拼接成字符串

  • 进行sha1加密

  • 再进行MD5加密

  • 转换成大写。

前台

这里我并没有实际的前台,直接使用一个PHP文件代替前台,然后通过CURL模拟GET请求。我使用的是TP框架,URL格式是pathinfo格式。

源代码

<?php

namespace Client\Controller;
use Think\Controller;

class ClientController extends Controller{
    const TOKEN = 'API';
    //模拟前台请求服务器api接口
    public function getDataFromServer(){
        //时间戳
        $timeStamp = time();
        //随机数
        $randomStr = $this -> createNonceStr();
        //生成签名
        $signature = $this -> arithmetic($timeStamp,$randomStr);
        //url地址
        $url = "Http://www.apitest.com/Server/Server/respond/t/{$timeStamp}/r/{$randomStr}/s/{$signature}";
        $result = $this -> httpGet($url);
        dump($result);
    }

    //curl模拟get请求。
    private function httpGet($url){
        $curl = curl_init();

        //需要请求的是哪个地址
        curl_setopt($curl,CURLOPT_URL,$url);
        //表示把请求的数据已文件流的方式输出到变量中
        curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);

        $result = curl_exec($curl);
        curl_close($curl);
        return $result;
    }

    //随机生成字符串
    private function createNonceStr($length = 8) {
        $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        $str = "";
        for ($i = 0; $i < $length; $i++) {
            $str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);
        }
        return "z".$str;
    }

    
    private function arithmetic($timeStamp,$randomStr){
        $arr['timeStamp'] = $timeStamp;
        $arr['randomStr'] = $randomStr;
        $arr['token'] = self::TOKEN;
        //按照首字母大小写顺序排序
        sort($arr,SORT_STRING);
        //拼接成字符串
        $str = implode($arr);
        //进行加密
        $signature = sha1($str);
        $signature = md5($signature);
        //转换成大写
        $signature = strtoupper($signature);
        return $signature;
    }
}

服务器端

接受前台数据进行验证

源代码

<?php

namespace Server\Controller;
use Think\Controller;

class ServerController extends Controller{
    const TOKEN = 'API';

    //响应前台的请求
    public function respond(){
        //验证身份
        $timeStamp = $_GET['t'];
        $randomStr = $_GET['r'];
        $signature = $_GET['s'];
        $str = $this -> arithmetic($timeStamp,$randomStr);
        if($str != $signature){
            echo "-1";
            exit;
        }
        //模拟数据
        $arr['name'] = 'api';
        $arr['age'] = 15;
        $arr['address'] = 'zz';
        $arr['ip'] = "192.168.0.1";
        echo json_encode($arr);
    }

    
    public function arithmetic($timeStamp,$randomStr){
        $arr['timeStamp'] = $timeStamp;
        $arr['randomStr'] = $randomStr;
        $arr['token'] = self::TOKEN;
        //按照首字母大小写顺序排序
        sort($arr,SORT_STRING);
        //拼接成字符串
        $str = implode($arr);
        //进行加密
        $signature = sha1($str);
        $signature = md5($signature);
        //转换成大写
        $signature = strtoupper($signature);
        return $signature;
    }
}

结果

string(57) "{"name":"api","age":15,"address":"zz","ip":"192.168.0.1"}"

总结

这种方法只是其中的一种方法,其实还有很多方法都是可以进行安全验证的。

以上就是php api 安全验证失败怎么办的详细内容,更多请关注编程界其它相关文章!

--结束END--

本文标题: php api 安全验证失败怎么办

本文链接: https://www.lsjlt.com/news/704.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • php api 安全验证失败怎么办
    本文操作环境:Windows7系统、PHP7.1、Dell G3。php api 安全验证失败怎么办?php的api接口在实际工作中,使用PHP写api接口是经常做的,PHP写好接口后,前台就可以通过链接获取接口提供的数据,而返回的数据一般...
    99+
    2020-07-26
    php接口安全
  • php api安全验证失败怎么解决
    这篇文章主要介绍“php api安全验证失败怎么解决”,在日常操作中,相信很多人在php api安全验证失败怎么解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”php api安全验证失败怎么解决”的疑惑有所...
    99+
    2023-06-21
  • SSL证书安全检验失败怎么处理
    SSL证书安全检验失败处理的方法:1、SSL证书安全建议失败显示之后,点击地址栏背面的证书错误按钮打开弹出窗口,单击查看证书,点确定,出现警告,点是以安装证书;2、使用URL解决此站点的安全证书是否存在问题。具体内容如下:修改配置单击“继续...
    99+
    2022-10-19
  • win7安装FLASH提示证书验证失败该怎么办?
    FLASH证书验证失败的问题经常在安装FLASH软件的时候遇上,就是当用户在win7系统中使用IE浏览器中安装FLASH 1、打开IE浏览器,点击菜单栏上面的“工具-Internet选项”项;&...
    99+
    2023-06-13
    win7 FLASH 证书 提示
  • vue+element ui表单验证有值但验证失败怎么办
    小编给大家分享一下vue+element ui表单验证有值但验证失败怎么办,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一.如图:有值但是验证失败二.<el-form :m...
    99+
    2022-10-19
  • php mangaer安装失败怎么办
    本文操作环境:Windows10系统、PHP7.1、Dell G3电脑。php mangaer安装失败怎么办?Windows 10 安装PHP Manager 失败的解决办法首先安装.NET 2.0和.NET 3.5, 在 控制面板---...
    99+
    2014-08-19
    php
  • discuz验证失败怎么解决
    discuz验证失败解决方法:1、输入正确的用户名和密码;2、输入正确验证码;3、尝试刷新页面或者在稳定的网络环境下重新登录;4、尝试清除浏览器缓存和Cookie;5、联系管理员以获取进一步的帮助。本教程操作环境:windows10系统、d...
    99+
    2023-07-10
  • ssl证书验证失败怎么解决
    1、检查证书有效期证书在有效期内才能被认为是有效的,如果证书已经过期,就会导致验证失败。需要检查证书的有效期,如果证书已经过期,需要...
    99+
    2023-05-23
    ssl证书验证 ssl证书
  • KB4012213安装失败怎么办?KB4012213安装失败的解决办法
    KB4012213其实是微软官方系统安全补丁,可以让你的win8系统免受勒索病毒的困扰,为了能预防电脑被onion病毒侵袭,大家必需要赶紧下载KB4012213补丁进行安装了。但是最近有不少朋友出现了安装失...
    99+
    2022-06-04
    解决办法
  • 自签IPA提示“安装包验证失败或设备未越狱”怎么办?
    今天自签香色闺阁,在签名成功后,安装时遇到了一个问题,安装到一半提示:安装包验证失败或设备未越狱。相信应该也有挺多的铁子遇到过,所以就专门写个文章介绍下情况和解决办法吧。 问题出在哪? 我首...
    99+
    2023-09-08
    ios iphone 经验分享 safari Powered by 金山文档
  • php查询失败怎么办
    本文操作环境:Windows7系统、PHP7.1版、DELL G3电脑php查询失败怎么办?具体问题描述如下:php+mysql! 连接成功,但是查询失败! 详细代码如下: <php $startTime=microtime (tru...
    99+
    2014-11-25
    php
  • php insert into失败怎么办
    本教程操作环境:Windows7系统、PHP8.1版、Dell G3电脑。php insert into失败怎么办?解决|php insert into 插入失败 |Incorrect string value: '\xE5\x88...
    99+
    2022-11-25
    insert into php
  • 亚马逊云短信验证服务器失败怎么办理
    检查您的短信验证服务器是否与亚马逊云所使用的端口一致。如果不一致,请更新您的端口号以使其与亚马逊云所使用的端口号相同。 检查您的帐户设置。有些亚马逊云服务需要您设置帐户和密码,以便您可以访问和控制您的数据。如果您忘记了这些设置,则可能无法...
    99+
    2023-10-27
    亚马逊 短信 服务器
  • 亚马逊云短信验证码服务器失败怎么办
    检查服务器状态:检查是否有足够的权限让您登录到该短信验证码服务器上。如果您没有权限登录,您需要联系您的亚马逊云控制台管理员或服务提供商,以便他们能够帮助您配置和管理服务器。 检查短信验证码库存:检查您的短信验证码库存是否充足。如果库存不足...
    99+
    2023-10-27
    亚马逊 验证码 短信
  • eclipse安装git失败怎么办
    Eclipse是目前一款广受欢迎的Java集成开发环境(IDE),而Git则是目前备受欢迎的分布式版本控制系统。在Eclipse中安装Git是非常方便的,但有时候会出现安装Git失败的问题,本文将对这个问题进行探讨。确认网络连接在Eclip...
    99+
    2023-10-22
  • pytorch-gpu安装失败怎么办
    这篇文章将为大家详细讲解有关pytorch-gpu安装失败怎么办,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。ubuntu18 系统上已经配置好gpu加速环境,安装pytorch-gpu 后出现以下问题:...
    99+
    2023-06-15
  • 安装vue devtools失败怎么办
    本教程操作环境:Windows10系统、vue-devtools6.1.4版、Dell G3电脑。安装vue devtools失败怎么办?关于vue-devtools安装过程的报错问题解决一、用谷歌浏览器在官网下载压缩包,记得存储的路径(避...
    99+
    2023-05-14
    Vue devtools
  • win8.1 安装itunes11失败怎么办?
    最近测试了windows 8.1正式版的一些功能, 安装 itunes 11 一直失败 然后回滚安装进度 1、安装时,出错如下: 2、点 “结束” 。 3、我的解决方案是以 Wi...
    99+
    2022-06-04
  • node-sass安装失败怎么办
    这篇文章将为大家详细讲解有关node-sass安装失败怎么办,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。前言我们一般在利用npm 安装 node-sass 依赖时,会从...
    99+
    2022-10-19
  • mysql安装server失败怎么办
    mysql中安装server失败的解决方法原因:原因的MySQL数据为清理干净,导致安装失败。解决方法:打开控制板面,点击“程序”,选择“卸载程序”选项;进入卸载程序页面后,在程序列表中对MySQL程序进行卸载;MySQL程序卸载后,使用组...
    99+
    2022-10-20
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作