1 網(wǎng)絡(luò)請(qǐng)求的安全方案
1.1 https請(qǐng)求,最好有安全交互平臺(tái)。
1.2 對(duì)重要的參數(shù)請(qǐng)求進(jìn)行加密(推薦AES,ERSA加密)。
1.3 服務(wù)器返回?cái)?shù)據(jù)時(shí),對(duì)重要數(shù)據(jù)進(jìn)行加密。
1.4 不要把密鑰寫到代碼里。可以先通過(guò)非對(duì)稱加密的接口獲取密鑰,然后再在后面的接口通信中用這個(gè)密鑰進(jìn)行加密。
1.5 密鑰要定期更換,
如果密鑰是寫在代碼里的,就等APP升級(jí)新的版本的時(shí)候,新版本的APP和其他對(duì)應(yīng)的接口版本都修改為新密鑰。
如果密鑰是從接口通過(guò)非對(duì)稱加密獲取的,直接修改服務(wù)端。
2 客戶端安全方案
2.1 不要在plist文件、項(xiàng)目中的靜態(tài)文件中存儲(chǔ)關(guān)鍵信息,如果存儲(chǔ),進(jìn)行加密。
2.2 NSUserDefaults,sqlite存儲(chǔ)文件進(jìn)行數(shù)據(jù)加密。對(duì)程序中出現(xiàn)的URL進(jìn)行編碼加密,防止URL被靜態(tài)分析。
2.3 代碼混淆。比如用宏來(lái)簡(jiǎn)單混淆。方法名和方法體進(jìn)行混淆。
2.4 在release環(huán)境下,NSLog不要打印日志,在swift中打印用print。
2.5 在代碼中,方法名不要有key、password、getIPAddress等字眼。
2.6 登錄失敗時(shí)不要提示明確判斷用戶名錯(cuò)誤或密碼錯(cuò)誤。
2.7 登錄時(shí)采用兩種或兩種以上組合的鑒別技術(shù)(如:數(shù)字證書體系、硬件令牌、生物特征、一次性動(dòng)態(tài)口令等)實(shí)現(xiàn)用戶身份鑒別。
2.8 使用加密軟鍵盤,鍵盤隨機(jī),隱私數(shù)據(jù)輸入的時(shí)候,進(jìn)行全部屏蔽。
2.9 隱私數(shù)據(jù)顯示的時(shí)候,不要明文顯示,部分或全部屏蔽。(黑客拿到用戶姓名、手機(jī)號(hào)后,進(jìn)行詐騙)。
3.0 使用防截屏功能。
3.1 多點(diǎn)登陸(防止設(shè)備同時(shí)登陸)。
3.2 設(shè)備丟失功能。