为了账号安全,请及时绑定邮箱和手机立即绑定

PHP接口安全处理

标签:
PHP Html5 Yii

<?php

/**

* SignCheck : session key 对称式 加密校验.

* 注:公私钥模式可以避免私钥被窃取.

*/

// 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";

}

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
PHP开发工程师
手记
粉丝
0
获赞与收藏
49

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消