本文是參考網上資料,和結合自身的一些開發經驗所寫,不喜勿噴!
在app的后台設計中,一個很重要的因素是考慮通訊的安全性。
因此,我們需要考慮的要點有:
1. 在app和后台,都不能保存任何用戶密碼的明文
2. 在app和后台通訊的過程中,怎么保證用戶信息的安全性
3,app的反編譯處理
在app中,根據安全考慮,用戶的操作分為兩類:
1. 用戶登錄注冊操作
2. 用戶的其他操作
在第一點,用戶登錄注冊操作中,是會出現用戶密碼,所以在這個過程中,必須要使用https通訊,保證通訊的安全。
在第二點,用戶的其他操作,怎么保證這部分通訊的安全呢?
在我的設計中,是采用了公鑰加私鑰保證安全。用戶的id是公鑰,通過一定的算法對用戶的id進行加密得到一個加密字符串是私鑰。當用戶登錄或注冊后,通過https把公鑰加私鑰返回給app客戶端。
但這個方法有個缺點,當別人截獲了這個url時可以重復使用,所以有個改進方法是在傳遞的參數中增加時間戳,當發現這個時間戳離現在的時間已經很久了,就判斷這個url已經失效了。但用時間戳怎么保證app的時間和服務器的時間同步?可以在app每次啟動和注冊登錄時和服務器同步時間,然后在app內建一個時鍾,時間戳在這個app的內部時鍾獲取,防止用戶修改了手機的時間。
后台由於項目新的需求開發微信端,走的也是這個接口,如果想用上面的方案可就走不通了,因為微信端相當於一個pc端,如果走同一個接口,無疑就把所有的安全性問題暴露了,熟悉點前端的都知道,很多前端js腳本完全暴露給別人了,尤其是私鑰的處理,尤為復雜!ios,android可以把秘鑰存儲在本機文本或數據庫中,但是網頁不行!但是網頁上的可以存在私鑰session中,每次請求都進行相應的校驗,就可以用解決了!
最后,希望能幫助到大家,謝謝!