博 客 - 正文

接口密钥《签名校验》开发说明

来源:小畅数据 分类:行业资讯 凯哥 阅读(169)

接口密钥《签名校验》开发说明

通过签名校验的方式,可有效解决请求伪造,不必担心伪造请求来源和服务器换IP的问题。

开发方法:

1.签名计算

  1. 请求参数+SK进行拼接,并计算拼接后字符串md5值(字符必须为小写),即为签名(sign): 

  2. 例:请求查询IP接口 /api/ip/query?key=你申请的key&ip=8.8.8.8

  3. 签名过程(蓝色字符串是你的请求串,后面红色字符串是SK):md5("key=你申请的key&ip=8.8.8.874c9cc6bc5c4b951e476a880fb6f32bb")

  4. 签名结果:5731b6fd965a5cafd40a4bc5810a7cb9

2.请求过程

接口参数均正常请求,但签名要在请求头Header中提交
提交签名:PHP: header("sign:5731b6fd965a5cafd40a4bc5810a7cb9");

以上是请求签名sign的计算全过程!
注意:计算 sign 要使用原始参数值,不要进行任何编码,但最终发送时的参数,是需要时行url编码的

3.示例DEMO【PHP】

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<?php
/**
 * 凯哥网络 · API请求DEMO
 
 * 本demo支持GET与POST请求,同时支持签名验证与无需签名。
 */
 
//你申请的key密钥
$API_KEY '你申请的key密钥';
 
//API接口地址
$API_URL 'https://api.tjit.net/api/ip/query';
 
$get_post_data array(
    //接口参数,一行一个,可按照用户控制台->开发工具 的参数填写,或者直接复制开发工具下面的测试代码。
    'key' => $API_KEY,
    'ip' => '8.8.8.8',
);
 
//签名校验的 SK:(在用户控制台https://api.tjit.net/user/key的秘钥安全设置->签名校验 开启后才会生效,没开启签名校验留空即可。)
$sk '74c9cc6bc5c4b951e476a880fb6f32bb';
 
/*发起请求API接口:
第1个参数:API接口地址URL,跟上面的同名变量相对应,无需更改。
第2个参数:API接口参数数组,跟上面的同名变量相对应,无需更改。
第3个参数:请求协议(GET或POST),一般默认GET,部分接口需要POST请求,根据实际情况修改为POST即可。
第4个参数:是否验证签名,true验证签名,否则false不验证签名,根据用户控制台 https://api.tjit.net/user/key 的 秘钥安全设置->签名校验 开启后才会生效,如没开启,填写false即可。
第5个参数:如果第4个参数开启验证签名,此处必须填写 SK ,跟上面的同名变量相对应,无需更改。
 */
$resdata = api::send($API_URL$get_post_data'GET', true, $sk);  //发起请求,注意这里要选择接口支持的协议,默认GET,可选POST
 
//打印请求结果
print($resdata);
///////////////你的业务代码可写在这里处理API返回的数据
 
/**
 * API请求类
 */
class api
{
    public static function send($API_URL$get_post_data$type$ifsign$sk)
    {
        $get_post_data = http_build_query($get_post_data);
        if ($ifsign) {
            $sign = md5($get_post_data $sk);
            $res = self::send_curl($API_URL$type$get_post_data$sign);
        else {
            $res = self::send_curl($API_URL$type$get_post_data, null);
        }
        return $res;
    }
    //封装好的CURL请求函数,支持POST|GET
    public static function send_curl($API_URL$type$get_post_data$sign)
    {
        $ch = curl_init();
        if ($type == 'POST') {
            curl_setopt($ch, CURLOPT_URL, $API_URL);
            curl_setopt($ch, CURLOPT_POST, true);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $get_post_data);
        elseif ($type == 'GET') {
            curl_setopt($ch, CURLOPT_URL, $API_URL '?' $get_post_data);
        }
        if ($sign) {
            curl_setopt($ch, CURLOPT_HTTPHEADER, ['sign:' $sign]);
        }
        curl_setopt($ch, CURLOPT_REFERER, $API_URL);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_TIMEOUT, 10);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
        $resdata = curl_exec($ch);
        curl_close($ch);
        return $resdata;
    }
}


至此,本教程结束!


数据驱动未来

立即注册

客服微信

4981406

请打开手机微信,扫一扫联系我们

客服QQ
4981406

商务号,添加请说明来意

返回顶部