/**
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介面安全性...