用HTTPS通信,另外APP往服務(wù)器接口發(fā)送的參數(shù)帶token,還要加上簽名,服務(wù)器端驗簽名(以防參數(shù)被篡改),校驗token;同時加上時間戳,防止重放。(簽名算法、密鑰的分配安全存儲要設(shè)計好)
創(chuàng)新互聯(lián)公司長期為上千客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為瀘州企業(yè)提供專業(yè)的網(wǎng)站制作、網(wǎng)站建設(shè),瀘州網(wǎng)站改版等技術(shù)服務(wù)。擁有10余年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
對服務(wù)器接口要有監(jiān)控,監(jiān)控到異常情況要有處理方案。
最好的辦法是用比較靠譜的服務(wù)器安全軟件,其實現(xiàn)在市面上好多,本人用的是云鎖。它實現(xiàn)了對服務(wù)器的多端防護(hù)(PC、web、APP等),而且占用系統(tǒng)資源特別小,值得一用。
對稱加密:對稱加密加密與解密使用的是同樣的密鑰,所以速度快,但由于需要將密鑰在網(wǎng)絡(luò)傳輸,所以安全性不高
非對稱加密:非對稱加密使用了一對密鑰,公鑰與私鑰,所以安全性高,但加密與解密速度慢。
方案:將對稱加密的密鑰使用非對稱加密的公鑰進(jìn)行加密,然后發(fā)送出去,接收方使用私鑰進(jìn)行解密得到對稱加密的密鑰,然后雙方可以使用對稱加密來進(jìn)行溝通。
方案的流程介紹:
1、APP客戶端需要和服務(wù)器進(jìn)行數(shù)據(jù)交互,它的APP首先生成了一個隨機(jī)數(shù)作為對稱密鑰(比如AES加密的密鑰)。
2、APP客戶端向服務(wù)器請求公鑰
3、服務(wù)器將公鑰發(fā)送給APP客戶端
4、APP客戶端使用服務(wù)器的公鑰將自己的對稱密鑰(比如AES加密的密鑰)加密
5、APP客戶端將加密后的對稱密鑰發(fā)送給服務(wù)器
6、服務(wù)器使用私鑰解密得到APP客戶端的對稱密鑰
7、APP客戶端與服務(wù)器可以使用對稱密鑰來對溝通的內(nèi)容進(jìn)行加密與解密了
App端和后臺數(shù)據(jù)加密分兩部分:
1.數(shù)據(jù)傳輸?shù)臅r候加密 (一般采用Https協(xié)議在傳輸層加密)
2.數(shù)據(jù)本身的加密 (使用各種加密算法)
RSA非對稱加密:公鑰加密,私鑰解密。公鑰私鑰由服務(wù)端生成,公鑰放在客戶端私密保存,私鑰放在服務(wù)端。安全性高,運算速度慢
AES對成加密:運算速度快切安全性高
上面網(wǎng)絡(luò)通信過程是安全的,可以保證通信數(shù)據(jù)即使被截取了,也無法獲得任何有效信息;即使被篡改了,也無法被客戶端和服務(wù)端驗證通過。
具體可參考的博文:(記得后續(xù)實踐哦)
;depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param
apk簽名相當(dāng)于程序的身份識別代碼。
apk簽名用于程序編譯打包之后,手機(jī)在運行程序之前會先去驗證程序的簽名(可以看作類似于我們電腦上常說的md5)是否合法,只有通過了驗證的文件才會被運行,所以簽名軟件的作用的讓文件通過手機(jī)的驗證為合法,不同的手機(jī)、系統(tǒng)是對應(yīng)不同的簽名的。
進(jìn)行加密通訊防止API外部調(diào)用
服務(wù)器端與客戶端各自會存儲一個TOKEN,這個TOKEN我們?yōu)榱朔乐狗淳幾g是用C語言來寫的一個文件并做了加殼和混淆處理。
在客戶端訪問服務(wù)器API任何一個接口的時候,客戶端需要帶上一個特殊字段,這個字段就是簽名signature,簽名的生成方式為:
訪問的接口名+時間戳+加密TOKEN 進(jìn)行整體MD5,并且客戶端將本地的時間戳作為明文參數(shù)提交到服務(wù)器
服務(wù)器首先會驗證這兩個參數(shù):驗證時間戳,如果時間誤差與服務(wù)器超過正負(fù)一分鐘,服務(wù)器會拒絕訪問(防止被抓包重復(fù)請求服務(wù)器,正負(fù)一分鐘是防止時間誤差,參數(shù)可調(diào)整),
然后服務(wù)器會根據(jù)請求的API地址和提交過來的時間戳再加上本地存儲的token按照MD5重新生成一個簽名,并比對簽名,簽名一致才會通過服務(wù)器的驗證,進(jìn)入到下一步的API邏輯