php app開發介面加密範例

2021-08-13 04:39:38 字數 1701 閱讀 5114

/**

inc

解析介面

客戶端介面傳輸規則:

1.用cmd引數(base64)來動態呼叫不同的介面,介面位址統一為

2.將要傳過來的引數組成乙個陣列,陣列新增timestamp元素(當前時間戳,精確到秒),將陣列的鍵值按照自然排序從大到小排序

3.將陣列組成 key=val&key=val的形式的字串,將字串與xpp_key連線在一起,用md5加密一次(32位小寫),得到sign

4.將sign新增到引數陣列中

5.將引數陣列轉換成json用post請求請求介面位址,key值為param

服務端介面解析規則:

1.接收引數param,將結果解析json得到引數陣列

2.取出sign,去掉引數陣列中的sign

3.將引數陣列key值按照自然排序從大到小排序

4.將排序後的引數陣列按照key=val&key=val的形式組成字串,將字串與xpp_key連線,用md5加密一次(32位小寫),得到sign

5.將sign與客戶端傳過來的sign進行比對,如不一樣則可能是中途被篡改引數,伺服器拒絕此次請求

6.將sign與session中的sign對比,如果一樣,則為重複提交,伺服器拒絕此次請求

7.此次的sign存入session

8.執行路由cmd(base64解析後),將引數帶到該方法中*/

$xpp_key = "***";

//接收引數param,將結果解析json得到引數陣列

$param = json_decode($_post['param'] , true);

//取出sign,去掉引數陣列中的sign

$client_sign = $param['sign'];

unset($param['sign']);

//將引數陣列key值按照自然排序從大到小排序

krsort($param);

//將排序後的引數陣列按照key=val&key=val的形式組成字串,將字串與xpp_key連線,用md5加密一次(32位小寫),得到sign

$sb = '';

foreach($param as $key=>$val)

$sb .= $xpp_key;

$server_sign = md5($sb);

//將sign與客戶端傳過來的sign進行比對,如不一樣則可能是中途被篡改引數,伺服器拒絕此次請求

if($server_sign !== $client_sign)

//將sign與session中的sign對比,如果一樣,則為重複提交,伺服器拒絕此次請求

if($server_sign == $_session['last_sign'])

//此次的sign存入session

$_session['last_sign'] = $server_sign;

//執行路由cmd(base64解析後),將引數帶到該方法中

$cmd = base64_decode($param['cmd']);

list($__controller,$__action) = explode('-' , $cmd);

// 設定請求引數

unset($param['cmd']);

unset($param['timestamp']);

foreach($param as $key => $val)

php app介面實現(json和xml)

上篇學習了封裝mysql的例項化物件類!xml 擴充套件標記語言 可以標記資料 定義資料型別 資料格式清晰明了,可讀性高 json 一種輕量級的資料交換格式 生成資料簡單 傳輸速度快 獲取資料 從資料庫中或者快取中獲取資料 可以是快取裡的資料 提交資料 通過get方式或者post方式提交資料,服務端...

PHP介面開發常規加密辦法

下面例子簡單講解php介面開發加密技術 則實際發起請求為 index.php?module user action list token 880fed4ca2aabd20ae9a5dd774711de2 伺服器端接到請求用同樣方法計算token php 1 2 3 4 5 6 7 module ge...

api介面加密 如何解決API介面開發安全性呢?

如今各種api介面層出不窮,乙個api的好與不好有很多方面可以考量,其中 安全性 是乙個api介面最基本也是最重要的乙個特點。尤其是對於充值繳費類的api介面來說,如話費充值api介面 流量充值api介面 遊戲q幣充值 水電煤繳費介面等,安全與否直接影響到個人或企業的財產,所以做好的api介面安全性...