ITPub博客

首页 > IT职业 > IT生活 > PHP接口安全处理

PHP接口安全处理

IT生活 作者:huzhizhong 时间:2021-09-09 10:26:00 0 删除 编辑

<?php

// Client:

$time = time();

$url = "name=dudj&password=123456&telephone=130****8873&time={$time}";

// Client和Server通用私钥.

$uuid = 'b9514c52-5363-4364-b73f-a2ec93ae6b34';

function getSign($url, $uuid, $encode = true)

{

    parse_str( $url, $arr );

    if (! $encode ) { 

        unset($arr['sign']);

    } 

    // 1. 参数按首字母排序

    ksort($arr, SORT_REGULAR);

    $str = http_build_query($arr);

    // 2. 参数字符串拼接私钥(TODO自定义)

    $new_str = $str . $uuid;

    // 3. 生成新sign(TODO自定义)

    $sign = openssl_encrypt($new_str, 'AES-128-CBC', $uuid, OPENSSL_RAW_DATA, substr($uuid, 0, 16));

    return md5($sign);

}

// 4. 参数拼接sign进行请求

$client_sign = getSign($url, $uuid);

$request_url = $url . "&sign={$client_sign}";

// Server:

// 去除sign重新校验,并检查time有效期

$server_sign = getSign($request_url, $uuid, false);

if(($client_sign == $server_sign) && ((time()-$time)<5)){

    echo "{$server_sign} 有效,且在有效期内.n";

    //做接口处理

    parse_str( $url, $arr );

    var_dump($arr);

}else{

    return "非法请求.n";

}

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/1446/viewspace-2821977/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-04-15

  • 博文量
    107
  • 访问量
    919