首頁  >  文章  >  後端開發  >  行動端與PHP服務端介面通訊流程設計增強版

行動端與PHP服務端介面通訊流程設計增強版

WBOY
WBOY原創
2016-07-29 09:04:011216瀏覽

前面講過:行動端與PHP服務端介面通訊流程設計(基礎版)

對於 api_token 的校驗,其安全性還可再增強:

增強地方一:

張表,一個介面表,一個授權表,設計參考如下:

介面表

varchar(120) is_enabledadd_time(戳)int)int
寫字欄位型別
接口ID api_name
介面名,以"/"作為分割線,如blog/Index/addBlog api_domainfall_dofall856)
tinyint(1) 是否可用 1:可用0:不可用
int
(戳)再擴充吧!! api_id
api編號

api_name

varchar(120)接口名,以"/"作為分割線,如blog/Index/addBlog 0:不可用add_timeint添加時間(戳)expire_time的再擴充吧! URL,組裝api_name,再加上客戶端傳回的client_id 為參數,查找「授權表」記錄,如果記錄存在,且有效(是否可用,是否過期),則表示權限驗證通過,返回介面數據,否則返回錯誤訊息;對於一些很特殊的接口,怎麼特殊,哪些算特殊,我也不知道,總而言之,就是感覺http請求有可能被劫取,傳遞參數有可能被竄改等情況,還是舉個例子來說吧:有個直接轉賬接口,頁面上我輸入的是5元,表示我要給對方某某轉賬5元,結果在http傳遞過程中,被人劫取並竄改成了10,000元,而且入帳對象改成了「駭客」的帳號,那不是虧大發了,思考了一下,應該有2種方案解決這個問題,方案一:走https,這個就不多說,比較公認的安全機制;方案二:走數字簽名,實現原理如下:一個http請求,假如需要傳遞如下3個參數參數名1=參數值1參數名2=參數值2參數名稱3=參數值3我們可以再追加一個參數,該參數的名為 identity_key (名字是什麼不重要),該參數的值為 即:identity_key = md5('參數值1' + '參數值2' + '參數值3' + '');於是,最終傳遞的參數有:於是參數名稱1=參數值1參數名稱2=參數值2
增強地方二:
前幾個參數值順序相加,再加密後的結果。
加密金鑰

參數名稱3=參數值3

client_id=client_id值

identity_key=md5('參數值1' + '參數值2' + '參數值3'+ 'client_id值' + '

加密金鑰

')

服務端接到參數後,再按相同的加密規則重新產生一份 identity_key,服務端的

identity_key

和客戶端的

identity_key

 進行校對,如果不相等,表示被竄改過,接下來怎麼操作,自己看著辦吧!

以上就介紹了行動端與PHP服務端介面通訊流程設計增強版,包含了方面的內容,希望對PHP教學有興趣的朋友有幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn