好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > PHP開發api接口安全驗證的實例講解

PHP開發api接口安全驗證的實例講解

熱門標簽:江蘇外呼電銷機器人報價 深圳外呼系統收費 長沙crm外呼系統業務 離石地圖標注 400電話申請方法收費 南寧高頻外呼回撥系統哪家好 電話機器人危險嗎 400電話辦理福州市 專業電話機器人批發商

php的api接口

在實際工作中,使用PHP寫api接口是經常做的,PHP寫好接口后,前臺就可以通過鏈接獲取接口提供的數據,而返回的數據一般分為兩種情況,xml和json,在這個過程中,服務器并不知道,請求的來源是什么,有可能是別人非法調用我們的接口,獲取數據,因此就要使用安全驗證。

驗證原理

示意圖

原理

從圖中可以看得很清楚,前臺想要調用接口,需要使用幾個參數生成簽名。

時間戳:當前時間

隨機數:隨機生成的隨機數

口令:前后臺開發時,一個雙方都知道的標識,相當于暗號

算法規則:商定好的運算規則,上面三個參數可以利用算法規則生成一個簽名。

前臺生成一個簽名,當需要訪問接口的時候,把時間戳,隨機數,簽名通過URL傳遞到后臺。后臺拿到時間戳,隨機數后,通過一樣的算法規則計算出簽名,然后和傳遞過來的簽名進行對比,一樣的話,返回數據。

算法規則

在前后臺交互中,算法規則是非常重要的,前后臺都要通過算法規則計算出簽名,至于規則怎么制定,看你怎么高興怎么來。

我這個算法規則是

1 時間戳,隨機數,口令按照首字母大小寫順序排序

2 然后拼接成字符串

3 進行sha1加密

4 再進行MD5加密

5 轉換成大寫。

前臺

這里我并沒有實際的前臺,直接使用一個PHP文件代替前臺,然后通過CURL模擬GET請求。我使用的是TP框架,URL格式是pathinfo格式。

源代碼

?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2017/3/16 0016
 * Time: 15:56
 */
namespace Client\Controller;
use Think\Controller;
class ClientController extends Controller{
 const TOKEN = 'API';
 //模擬前臺請求服務器api接口
 public function getDataFromServer(){
  //時間戳
  $timeStamp = time();
  //隨機數
  $randomStr = $this -> createNonceStr();
  //生成簽名
  $signature = $this -> arithmetic($timeStamp,$randomStr);
  //url地址
  $url = "http://www.apitest.com/Server/Server/respond/t/{$timeStamp}/r/{$randomStr}/s/{$signature}";
  $result = $this -> httpGet($url);
  dump($result);
 }
 //curl模擬get請求。
 private function httpGet($url){
  $curl = curl_init();
  //需要請求的是哪個地址
  curl_setopt($curl,CURLOPT_URL,$url);
  //表示把請求的數據已文件流的方式輸出到變量中
  curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
  $result = curl_exec($curl);
  curl_close($curl);
  return $result;
 }
 //隨機生成字符串
 private function createNonceStr($length = 8) {
  $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
  $str = "";
  for ($i = 0; $i  $length; $i++) {
   $str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);
  }
  return "z".$str;
 }
 /**
  * @param $timeStamp 時間戳
  * @param $randomStr 隨機字符串
  * @return string 返回簽名
  */
 private function arithmetic($timeStamp,$randomStr){
  $arr['timeStamp'] = $timeSt
  $arr['randomStr'] = $randomStr;
  $arr['token'] = self::TOKEN;
  //按照首字母大小寫順序排序
  sort($arr,SORT_STRING);
  //拼接成字符串
  $str = implode($arr);
  //進行加密
  $signature = sha1($str);
  $signature = md5($signature);
  //轉換成大寫
  $signature = strtoupper($signature);
  return $signature;
 }
}

服務器端

接受前臺數據進行驗證

源代碼

?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2017/3/16 0016
 * Time: 16:01
 */
namespace Server\Controller;
use Think\Controller;
class ServerController extends Controller{
 const TOKEN = 'API';
 //響應前臺的請求
 public function respond(){
  //驗證身份
  $timeStamp = $_GET['t'];
  $randomStr = $_GET['r'];
  $signature = $_GET['s'];
  $str = $this -> arithmetic($timeStamp,$randomStr);
  if($str != $signature){
   echo "-1";
   exit;
  }
  //模擬數據
  $arr['name'] = 'api';
  $arr['age'] = 15;
  $arr['address'] = 'zz';
  $arr['ip'] = "192.168.0.1";
  echo json_encode($arr);
 }
 /**
  * @param $timeStamp 時間戳
  * @param $randomStr 隨機字符串
  * @return string 返回簽名
  */
 public function arithmetic($timeStamp,$randomStr){
  $arr['timeStamp'] = $timeSt
  $arr['randomStr'] = $randomStr;
  $arr['token'] = self::TOKEN;
  //按照首字母大小寫順序排序
  sort($arr,SORT_STRING);
  //拼接成字符串
  $str = implode($arr);
  //進行加密
  $signature = sha1($str);
  $signature = md5($signature);
  //轉換成大寫
  $signature = strtoupper($signature);
  return $signature;
 }
}

結果

string(57) "{"name":"api","age":15,"address":"zz","ip":"192.168.0.1"}"

總結

這種方法只是其中的一種方法,其實還有很多方法都是可以進行安全驗證的。

以上這篇PHP開發api接口安全驗證的實例講解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • PHP安全配置優化詳解
  • PHP網站常見安全漏洞,及相應防范措施總結
  • PHP安全之register_globals的on和off的區別
  • php解決安全問題的方法實例
  • PHP網頁安全認證的實例詳解
  • PHP實現根據密碼長度顯示安全條
  • PHP更安全的密碼加密機制Bcrypt詳解
  • 淺談php(codeigniter)安全性注意事項
  • 如何讓PHP的代碼更安全

標簽:株洲 南昌 曲靖 興安盟 南京 濱州 白酒營銷 太原

巨人網絡通訊聲明:本文標題《PHP開發api接口安全驗證的實例講解》,本文關鍵詞  PHP,開發,api,接口,安全,驗證,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PHP開發api接口安全驗證的實例講解》相關的同類信息!
  • 本頁收集關于PHP開發api接口安全驗證的實例講解的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 日本高清不卡一区二区三区| 你以后就是我的尿壶| 黑人精品XXX一区一二区| hhh肉| 他使劲尿她里面h| 再深点灬舒服灬太大了添阿宾视频| 人人妻人人澡人人爽人人sex的特色和优势| 高校教师在线看| 美女图片裸| 亚洲精品粉嫩小泬18p| 北条麻妃人妻中文字幕在线| 学校触犯×ofthedead| 有没有永久免费crm| 都市乱淫| 江珊三点尽露的片子| 99久久精品国产亚洲AV热热爱| 久久久精品国产sm调教网站| 在线看片h站| 16女性下面扒开无遮挡免费| 年轻的老师3完整在线观看| Hitomi成人无码在一区| 和鬼发生高潮鬼交| 欧美人禽性恔视频免费看| 两个奶头被吃得又翘又肿特别疼| 成人国产精品秘?齐天大性| 清纯大学生扒开双腿自慰| 99热在这里只有精品| 精品国产污污免费网站入口爱酱| 国产午夜嘿嘿嘿视频在线观看| 深夜福利欧美| 我和金毛做了四年一点事没有 | 日韩中文字幕乱码| 免费的成年私人影院在线观看| 性黑人婬妇?????| 成人AⅤ视频免费观看性视频 | 91久久久久无码精品国产绯闻| 又黄又湿的视频| 日本japanese18日本护士xxxx| 爽好舒服快想要免费看| 久久婷婷成人综合色| 日日摸夜夜爽啪啪5588|