PHP開發api介面安全驗證的例項,值得一看

2021-09-26 09:58:12 字數 2417 閱讀 8190

php的api介面

在實際工作中,使用php寫api介面是經常做的,php寫好介面後,前台就可以通過鏈結獲取介面提供的資料,而返回的資料一般分為兩種情況,xml和json,在這個過程中,伺服器並不知道,請求的**是什麼,有可能是別人非法呼叫我們的介面,獲取資料,因此就要使用安全驗證。

驗證原理

示意圖

原理

從圖中可以看得很清楚,前台想要呼叫介面,需要使用幾個引數生成簽名。

時間戳:當前時間

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

口令:前後臺開發時,乙個雙方都知道的標識,相當於暗號

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

前台生成乙個簽名,當需要訪問介面的時候,把時間戳,隨機數,簽名通過url傳遞到後台。後台拿到時間戳,隨機數後,通過一樣的演算法規則計算出簽名,然後和傳遞過來的簽名進行對比,一樣的話,返回資料。

演算法規則

在前後臺互動中,演算法規則是非常重要的,前後臺都要通過演算法規則計算出簽名,至於規則怎麼制定,看你怎麼高興怎麼來。

我這個演算法規則是

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

2 然後拼接成字串

3 進行sha1加密

4 再進行md5加密

5 轉換成大寫。

前台

這裡我並沒有實際的前台,直接使用乙個php檔案代替前台,然後通過curl模擬get請求。我使用的是tp框架,url格式是pathinfo格式。

源**

curl模擬get請求。

//隨機生成字串

private

function createnoncestr($length = 8)

return "z".$str; }

/** * @param $timestamp 時間戳

* @param $randomstr 隨機字串

* @return string 返回簽名

*/private

function arithmetic($timestamp,$randomstr

)}伺服器端接受前台資料進行驗證

源**

<?php /**

* created by phpstorm.

* user: administrator

* date: 2017/3/16 0016

* time: 16:01 */

namespace server\controller;

usethink\controller;

class servercontroller extends

controller

//模擬資料

$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

)}

結果

string(57) ""
總結這種方法只是其中的一種方法,其實還有很多方法都是可以進行安全驗證的。

PHP開發api介面安全驗證

目錄 在實際工作中,使用php寫api介面是經常做的,php寫好介面後,前台就可以通過鏈結獲取介面提供的資料,而返回的資料一般分為兩種情況,xml和json,在這個過程中,伺服器並不知道,請求的 是什麼,有可能是別人非法呼叫我們的介面,獲取資料,因此就要使用安全驗證。從圖中可以看得很清楚,前台想要呼...

PHP開發api介面安全驗證

隨機數 隨機生成的隨機數 口令 前後臺開發時,乙個雙方都知道的標識,相當於暗號 演算法規則 商定好的運算規則,上面三個引數可以利用演算法規則生成乙個簽名。然後拼接成字串 進行sha1加密 再進行md5加密 轉換成大寫。curl模擬get請求。隨機生成字串 private function creat...

PHP開發api介面安全驗證

在實際工作中,使用php寫api介面是經常做的,php寫好介面後,前台就可以通過鏈結獲取介面提供的資料,而返回的資料一般分為兩種情況,xml和json,在這個過程中,伺服器並不知道,請求的 是什麼,有可能是別人非法呼叫我們的介面,獲取資料,因此就要使用安全驗證。從圖中可以看得很清楚,前台想要呼叫介面...