現(xiàn)狀:項目中一直遺留著一個問題,接口請求安全性問題。項目中的接口都是不設防的,一直都沒校驗請求的合法性。
需要達到的目的:過濾非本身app發(fā)出的請求,服務器能校驗到客戶端請求的合法性。
解決方案:1.直接上https(可以避免抓包);2.采用接口請求帶上校驗參數(shù)。
本文是通過【2.采用接口請求帶上校驗參數(shù)】進行處理接口安全問題。
要達到目的需要解決4個問題:
1.客戶端和服務器通訊過程中需要帶上一個共同都能識別的值(Token)
2.Token有2個注意點(a.該值是服務器返回的;b.該值是可變的并且服務器是能識別的)
3.客戶端和服務器之間如何維護Token的不變部分和可變部分
4.如何讓請求中的Token是不可解析的
解決思路(在接口傳遞過程中全程加密,并且客戶端和服務器使用的加解密密鑰有2套)
方法1:
1.客戶端獲取預授權碼(預授權碼是一次性的,并且有效期1分鐘)
2.通過【預授權碼+APPID】獲取token和服務器當前時間戳(客戶端需要維護服務器返回的時間戳;)
3.客戶端每次請求都帶上 【 token + 變化的時間戳 】
4.token有一個效期,時間戳有一個有效范圍,只要token和時間戳有一個不正確都需要重新獲取
加上時間戳的原因:維護一個變化的值,可以減少請求信息被抓取后模擬請求的情況;
使用服務器時間戳的原因:避免客戶端時間不一致導致校驗失敗;
加密:因為如果不加密數(shù)據(jù)容易被模擬;
雙向加密:增加破解難度;
加上Token原因:雖然有了變化的時間戳,但是因為只是用時間戳的情況下后臺無法監(jiān)控請求對應的信息,也無法控制請求的停止。
轉載自http://www.cnblogs.com/Jimmy-pan/p/5786359.html