zoukankan      html  css  js  c++  java
  • PHP防止被重复请求接口的方法(网页端签名验证的方法)

    PHP防止被重复请求接口的方法(网页端签名验证的方法)
    可以采取签名验证的方式来 解决这个问题

    1 time和随机数都是PHP生成的显示在前端
    2 前端生成sign
    3 进行每次请求的sign计数 这个是时候用redis自增 来判断一共用了10次以上就返回 请重新刷新页面

    所以参数一定要静态 比方说根据可以学习微信jssdk 用appid time 随机数生成 这个必须每次刷新才能更新

    <pre>
    /
    function getsigns()
    {
    $parameters = array();
    $parameters['suijishu'] = getRandom(10, 5);
    $parameters['time'] = time();
    $sign = str_encrypt($parameters);
    $newpar['suijishu']=$parameters['suijishu'];
    $newpar['time']=$parameters['time'];
    $newpar['sign']=$sign;
    return $newpar;
    }
    //新版加密
    function str_encrypt($parameters)
    {

    unset($parameters['sign']);
    ksort($parameters);
    $parameters['key']='myk22';
    $signPars = url_build($parameters);
    $signPars = trim($signPars, '&');
    return strtolower(md5($signPars));
    }

    //新版字符串拼接
    function url_build($parameters)
    {
    $signPars = '';
    foreach ($parameters as $k => $v) {
    if (isset($v)) {
    $signPars .= $k . '=' . $v . '&';
    }
    }
    return $signPars;
    }
    </pre>

    客户端 post的3个参数都是上面getsigns()生成的
    <pre>
    function ajaxpost() {

    $.post("/home/moban/signtest", {
    "suijishu":suijishu,
    "time":time,
    "sign":sign,
    },
    function (data) {
    if(data.success==1){


    }else {
    alert('网络繁忙');
    }


    }, "json");
    }
    </pre>


    服务端


    <pre>
    function verifys(){
    $parameters['suijishu']=$_POST['suijishu'];
    $parameters['time']=$_POST['time'];
    $parameters['sign']=$_POST['sign'];
    if(!verify($parameters)){
    echo json_encode(array('success'=>0,'msg'=>'验证签名失败'));
    exit();
    }
    }
    </pre>


    验证下就好了


    ps:另外 不要js生成sign 因为js代码都是暴露的 也不要通过ajax请求生成sign 这样就没意思了。。


    2 采取验证码方式

  • 相关阅读:
    Vue 3 组件开发:搭建基于SpreadJS的表格编辑系统(环境搭建)
    纵观 ActiveX 平台的兴衰史,看开发控件的技术演变
    mysql函数
    SQL Server 连接字符串和身份验证
    http Content type
    C中二叉排序树的非递归和递归插入操作以及中序遍历代码实现【可运行】
    带头结点和不带头结点的链栈基本操作
    小程序开发日记-14悼篮球兄弟
    小程序开发日记-13 NetworkTimeout
    小程序开发日记-12 SSL证书及相关
  • 原文地址:https://www.cnblogs.com/newmiracle/p/11872516.html
Copyright © 2011-2022 走看看