互聯網開發--HTTP接口安全設計

http接口安全設計的必要性

作爲http接口的服務端,要能控制你本身自有數據的讀寫權限。
如果任何客戶端在任何時間都能讀寫你的數據,那麼用戶數據很容易被修改。這就好比沒加用戶登錄就可以訪問和讀寫所有的系統數據。根本沒有安全性可言了。

安全設計方案

方案1:(加密時間戳+可變的加密串)進行安全控制
原始請求:
http://www.zsfy.com/layy/getLayyList.htm?layyId=1001
安全控制後的請求:
http://www.zsfy.com/layy/getLayyList.htm?layyId=1001&timestamp=543fafaf678vnkdnfgsakjfdf676&key=HGYT65475Gt57UABNJKH677677KKJJ

時間戳timestamp說明:
(1)作用是:固定時間範圍內,減少同一請求被暴力調用的次數。
(2)客戶端請求里加上時間戳傳到服務端。服務端獲取時間戳與當前時間做比較,如果時間相差3分鐘,則拒絕訪問本接口。
(3)時間戳的作用可以理解爲給接口加了個有效期,超過這個有效期就不能再使用了。主要作用就是防止黑客暴力調用。
(4)注意客戶端服務器與接口服務器的時間要進行校準,保持一致;否則有效期會不對,導致接口無法正常使用。
(5)時間戳要進行加密傳輸。因爲數據加密後是沒有規律可循的,防止黑客模擬數據,進行非法請求。
加密串key說明:
(1)可變加密串組成:(可變字符串+固定字符串)。採取某種加密算法對(可變字符串+固定字符串)進行加密。
(2)如果沒有可變字符串,只是對某固定字符串加密,數據很容易被黑客模擬,進行非法調用。
(3)如果沒有固定字符串,只是對某可變字符串加密,萬一黑客通過各種測試,知道了key加密的規則,那麼客戶端給的key在服務端校驗總是ok的,接口就並非是安全的了。添加某固定的加密串,增加了黑客破解難度,提高了接口調用的安全性。
(4)客戶端與服務端約定好加密串裏”可變字符串“和”固定字符串“以及加密算法。服務端接收客戶端的字符串,根據約定好的協議自己生成加密串,再與客戶端的作比較,一致的話可以調用接口,否則不能調用接口。
比如加密串生成規則如下:md5(layyId+”helloword”)
生成規則爲參數layyId的值和某個約定的字符串helloword經過md5編碼後的值。
(5)加密算法也可以自定義,不過要注意性能問題,加密時間不要太長。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章