PHP实现前端Ajax与后端Api安全通讯
也许,是生活也是人生

顾名思义,数据通讯安全,在编程的行业里是众所周知

下面就是一个简单的php例子,实现js与php后台安全通讯

后端代码:

<?php
/**
 * Created by chak
 * Email: 266945@qq.com
 * Time: 2019/3/15 0:11
 */

namespace chak\extend;

/**
 * 安全请求
 * Class Request
 * @package chak\extend
 */
class Request
{

    /**
     * 获取所有的ajax_api请求
     */
    public static function securitycheck(){
        //获取enc和key
        $encrypt = trim($_POST['encrypt']);
        $token = trim($_POST['token']);
        //获取整个post
        $uri = '';
        foreach ($_POST as $key=>$value){
            if ($key != 'encrypt' && $key != 'token') {
                $uri .= $value;
            }
        }
        $server_encrypt = md5(base64_encode($uri . date('YmdH',time()) . $token));
        if ($encrypt != $server_encrypt) exit('该访问方式不安全');
    }

}


下面是二次封装jQuery的ajax代码:

function fd(s,t){
    return md5(Base.encode(s + getFormatDate(timest()) + t));
}

function ajax(url,data,func) {
    var str = '';
    for (var key in data){str += data[key];}
    data.token = Math.random().toString(36).substr(2);
    data.encrypt = fd(str,data.token);
    $.ajax({
        type: "POST",
        url: url,
        data:data,
        dataType: 'json',
        xhrFields: {
            withCredentials: true
        },
        crossDomain: true,
        success: func
    });
}



上面ajax调用了md5加密函数以及base64加密等函数,我已经封装到一个js文件中

common.js.zip


将上面的common.js解压出来,在你的footer中引入即可

前端JS代码使用例子:


ajax("你的api_url地址", {
    //参数例子,这里和jQuery中的ajax传参一模一样,需要json格式
    'username': $('#username').val()
}, function (result) {
    console.log(result);
});


非常简单的使用,封装了ajax,以后所有的api请求都需要经过安全处理

以上只是演示了前端和后端的安全通讯过程,更强的通讯算法需要你们自己加强


「也许,这就是人生」

发表评论

  1. 茶k 博主 @回复 沙发

    11