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,在這個過程中,伺服器並不知道,請求的 是什麼,有可能是別人非法呼叫我們的介面,獲取資料,因此就要使用安全驗證。從圖中可以看得很清楚,前台想要呼叫介面...