php給app寫介面進行介面的加密

來源:互聯網
上載者:User

標籤:code   php   foreach   ase   索引值   重複   sort   invalid   轉換   

<?php
/**
inc
解析介面
用戶端介面傳輸規則:
1.用cmd參數(base64)來動態調用不同的介面,介面地址統一為 http://a.lovexpp.com
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 = "xxx";

//接收參數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 .= $key . ‘=‘ . $val . ‘&‘;
}
$sb .= $xpp_key;
$server_sign = md5($sb);

//將sign與用戶端傳過來的sign進行比對,如不一樣則可能是中途被篡改參數,伺服器拒絕此次請求
if($server_sign !== $client_sign){
echo json_encode(array(‘code‘=>‘invalid request‘));
exit;
}

//將sign與session中的sign對比,如果一樣,則為重複提交,伺服器拒絕此次請求
if($server_sign == $_SESSION[‘last_sign‘]){
echo json_encode(array(‘code‘=>‘Repeated requests‘));
exit();
}

//此次的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){
$_REQUEST[$key] = $val;
}

php給app寫介面進行介面的加密

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.