接口密钥《签名校验》开发说明
通过签名校验的方式,可有效解决请求伪造,不必担心伪造请求来源和服务器换IP的问题。
开发方法:
1.签名计算
- 请求参数+SK进行拼接,并计算拼接后字符串md5值(字符必须为小写),即为签名(sign): 
- 例:请求查询IP接口 - /api/ip/query?key=你申请的key&ip=8.8.8.8
- 签名过程(蓝色字符串是你的请求串,后面红色字符串是SK): - md5("key=你申请的key&ip=8.8.8.874c9cc6bc5c4b951e476a880fb6f32bb")
- 签名结果: - 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请求类 */classapi{    publicstaticfunctionsend($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    publicstaticfunctionsend_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;    }} | 

 晋ICP备17012177号-2
晋ICP备17012177号-2