對於前端app在與后台服務端交互過程中,如果不加相應措施,將很容易導致系統安全,穩定性方面的問題。如通信數據被抓包導致非法獲取后端的數據,惡意攻擊后端發出大量的無效請求導致后端服務癱瘓等。
對此,我們將針對不同的問題提出對應的解決方案。
- 防非法調用——身份認證
- 防抓包——數據加密
- 防重放攻擊——時間戳+隨機字符串
- 防篡改——簽名機制
防非法調用——身份認證
身份認證是指只有經過合法授權的用戶才能調用我們的接口,這里我們采用Token驗證機制。
APP與服務端的整個通信過程如下:
詳細流程如下:
- 用戶首先需要輸入賬號密碼進行登錄;
- APP帶上用戶輸入的賬號密碼請求服務端登錄接口;
- 服務端校驗賬號密碼,校驗成功返回一個唯一Token作為用戶身份憑證;
- APP將Token緩存,同時登錄成功;
- 用戶使用APP瀏覽數據,APP每次向服務端請求數據時須同時帶上緩存的Token;
- 服務端收到請求,首先會校驗Token的合法性,校驗成功正常返回數據,校驗失敗直接返回錯誤;
Token驗證機制解決了什么問題?
設想一個場景,我們檢測到API接口正在被惡意調用,因為所有的接口都必須帶Token才能調用,根據Token我們就能快速反查到對應的用戶,所以Token驗證機制可以幫助我們快速確定調用者的身份。
發現惡意調用,我們通過Token確定調用者的身份后可以采取Token失效、封禁帳號等措施來阻止惡意調用繼續。
Token驗證機制能防止抓包嗎?
Token驗證機制並不能防止APP被抓包,因為Token同樣存在泄露的風險,惡意調用者只需要帶上Token再請求我們的API接口同樣還是能獲取到數據。
因為APP與服務端都是明文通信,一抓包就能看到請求參數以及返回數據,所以為了防止被抓包我們必須要對數據進行加密處理。
防抓包——數據加密
數據加密的過程,就是對原來明文傳輸的數據按某種加密算法進行加密處理,使其成為不可讀無意義的密文。
加密算法大體上可分為對稱加密、非對稱加密和散列算法等幾種方式,后面我們的方案都會涉及到。
對稱加密
對稱加密是一種可逆的加密算法,其中“對稱”的意思是加密過程和解密過程使用的是同一個密鑰。