PHP接口開發是PHP常見的技術,可以通過接口進行一些操作,可以訪問接口獲取數據,給app提供數據接口等,但是如果接口沒有加密解密的過程,很容易發生盜用和不安全的操作。
下面例子簡單講解PHP接口開發加密技術:
如app要請求用戶列表,api是“index.php?module=user&action=list”
app生成token = md5sum (‘user’.’2012-11-28′.’#$@%!’.list) = 880fed4ca2aabd20ae9a5dd774711de2;
則實際發起請求為 “index.php?module=user&action=list&token=880fed4ca2aabd20ae9a5dd774711de2”
服務器端接到請求用同樣方法計算token:
1
2
3
4
5
6
7
|
$module = $_GET['module'];
$action = $_GET['action'];
$token = md5sum($module.date('Y-m-d',time()).'#$@%!*'.$action);
if($token != $_GET['token']){
alarm('access deny');
exit();
}
|
這樣就判斷了請求url參數是合法的,允許訪問。關鍵是接口token參數的構造。
還有一種方法用到cookie,這種情況則不適用於讀取接口數據的應用場景,適合在瀏覽器中訪問接口。
1.請求頭里帶用戶username和password,到服務器端做驗證,通過才繼續下邊業務邏輯。
優點:防止了服務器端api被隨意調用。
缺點:每次都交互用戶名和密碼,交互量大,且密碼明文傳輸不安全。
2.第一次請求,要求username和password,驗證通過,種cookie到客戶端,app保存cookie值。
每次請求帶上cookie。
點評:和pc上瀏覽器認證的原理一樣了。