蝙蝠岛资源网 Design By www.hbtsch.com
                                本文实例讲述了PHP开发API接口签名生成及验证操作。分享给大家供大家参考,具体如下:
开发过程中,我们经常会与接口打交道,有的时候是调取别人网站的接口,有的时候是为他人提供自己网站的接口,但是在这调取的过程中都离不开签名验证。
我们在设计签名验证的时候,请注意要满足以下几点:
- 可变性:每次的签名必须是不一样的。
- 时效性:每次请求的时效,过期作废等。
- 唯一性:每次的签名是唯一的。
- 完整性:能够对传入数据进行验证,防止篡改。
一、签名参数sign生成的方法
第1步: 将所有参数(注意是所有参数),除去sign本身,以及值是空的参数,按参数名字母升序排序。
第2步: 然后把排序后的参数按参数1值1参数2值2…参数n值n(这里的参数和值必须是传输参数的原始值,不能是经过处理的,如不能将"转成”后再拼接)的方式拼接成一个字符串。
第3步: 把分配给接入方的验证密钥key拼接在第2步得到的字符串前面。
第2步: 在上一步得到的字符串前面加上验证密钥key(这里的密钥key是接口提供方分配给接口接入方的),然后计算md5值,得到32位字符串,然后转成大写.
第4步: 计算第3步字符串的md5值(32位),然后转成大写,得到的字符串作为sign的值。
举例:
假设传输的数据是/interface.php"htmlcode">
<"c4ca4238a0b923820dcc509a6f75849b";
$secret = "28c8edde3d61a0411511d3b1866f0636";
// 待发送的数据包
$data = array(
  'username' => 'abc@qq.com',
  'sex' => '1',
  'age' => '16',
  'addr' => 'guangzhou',
  'key' => $key,
  'timestamp' => time(),
);
// 获取sign
function getSign($secret, $data) {
  // 对数组的值按key排序
  ksort($data);
  // 生成url的形式
  $params = http_build_query($data);
  // 生成sign
  $sign = md5($params . $secret);
  return $sign;
}
// 发送的数据加上sign
$data['sign'] = getSign($secret, $data);
/**
 * 后台验证sign是否合法
 * @param [type] $secret [description]
 * @param [type] $data  [description]
 * @return [type]     [description]
 */
function verifySign($secret, $data) {
  // 验证参数中是否有签名
  if (!isset($data['sign']) || !$data['sign']) {
    echo '发送的数据签名不存在';
    die();
  }
  if (!isset($data['timestamp']) || !$data['timestamp']) {
    echo '发送的数据参数不合法';
    die();
  }
  // 验证请求, 10分钟失效
  if (time() - $data['timestamp'] > 600) {
    echo '验证失效, 请重新发送请求';
    die();
  }
  $sign = $data['sign'];
  unset($data['sign']);
  ksort($data);
  $params = http_build_query($data);
  // $secret是通过key在api的数据库中查询得到
  $sign2 = md5($params . $secret);
  if ($sign == $sign2) {
    die('验证通过');
  } else {
    die('请求不合法');
  }
}
"_blank" href="//www.jb51.net/Special/136.htm">php程序设计安全教程》、《php安全过滤技巧总结》、《PHP基本语法入门教程》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。
蝙蝠岛资源网 Design By www.hbtsch.com
                            
                                广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
                        免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
蝙蝠岛资源网 Design By www.hbtsch.com
                        暂无PHP开发API接口签名生成及验证操作示例的评论...
                                    更新日志
2025年10月31日
                                2025年10月31日
                    - 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]
 
                        