南通iOS開發(fā)培訓(xùn)基礎(chǔ)課程教學(xué)
76 2020-04-16
南通iOS開發(fā)培訓(xùn)基礎(chǔ)課程教學(xué) 為了保護(hù)用戶數(shù)據(jù),需要考慮兩個方面:(1)使用正確的數(shù)據(jù)存儲解決方案;(2)在輸入數(shù)據(jù)時保護(hù)數(shù)據(jù)。鑰匙串(Keychain)是蘋果公司開發(fā)的密碼管理系統(tǒng),存在于蘋果公司的macOS電腦操作系統(tǒng)和iOS移動操作系統(tǒng)。蘋果公司嚴(yán)格規(guī)定不允許在不同iOS應(yīng)用程序之間共享鑰匙串項目,這意味著iOS 鑰匙串項目只能由創(chuàng)建它們的應(yīng)用程序訪問。因此在iOS開發(fā)者在開發(fā)應(yīng)用時候,用戶的登錄、密鑰和密碼應(yīng)存儲在鑰匙串中。
核心數(shù)據(jù)(Core Data)是蘋果公司為開發(fā)者的提供的持久性數(shù)據(jù)庫開發(fā)接口框架,具有基礎(chǔ)SQLite數(shù)據(jù)庫的功能。有些開發(fā)者會將用戶的敏感數(shù)據(jù)存放在核心數(shù)據(jù),這是很危險的,因為默認(rèn)情況下,當(dāng)應(yīng)用程序解鎖時SQLite不會加密。蘋果公司提供的“數(shù)據(jù)保護(hù)”的功能僅僅在設(shè)備被密碼鎖定時候,它才會對沙箱進(jìn)行加密。
另一方面要保護(hù)用戶的輸入。如果用戶使用簡體中文輸入法鍵盤,輸入英文字符和數(shù)字字符的用戶名和密碼時,會自動啟動系統(tǒng)輸入法自動更正提示,然后用戶的輸入記錄會被以明文的形式緩存下來,其他應(yīng)用可以很方便讀取從手機(jī)相關(guān)目錄,獲得字符串輸入記錄[7],開發(fā)者應(yīng)注意關(guān)閉自動更正,屏幕截圖存在類似的情況,當(dāng)應(yīng)用程序進(jìn)入后臺時,系統(tǒng)會截取屏幕截圖。如果用戶輸入敏感數(shù)據(jù)并且在屏幕上可見,需要在應(yīng)用程序進(jìn)入后臺之前實現(xiàn)屏蔽屏幕的機(jī)制。
蘋果公司采用了App Transport Security迫使開發(fā)人員必須使用SSL(Secure Socket Layer)。SSL雖讓相對安全,但是通過ARP緩存投毒(cache poisoning) 或者DNS污染的方法也可以實現(xiàn)中間人攻擊[8]。移動用戶每天都會接觸到很多不安全的無線網(wǎng)絡(luò),SSL鎖定確保應(yīng)用程序僅與指定的服務(wù)器本身通信。SSL鎖定的先決條件之一是在應(yīng)用程序包中保存目標(biāo)的服務(wù)器的SSL證書[9]。應(yīng)用程序在配置SSL鎖定會話時可以用兩種方式:利用蘋果提供的網(wǎng)絡(luò)訪問接口NSURLSession、第三方庫AlamoFire或者AFNetworking。
使用NSURLSession鎖定SSL有點麻煩,開發(fā)者沒有辦法把已經(jīng)鎖定的證書放到一個數(shù)組中以便于讀寫操作,也不能自動終止與本地證書不匹配的響應(yīng),而且,需要手動地檢查每一個由NSURLSession建立的SSL鎖定。多數(shù)開發(fā)者目前會使用前面提到的兩個庫,它們已經(jīng)封裝了很多功能,使用更為簡單方便。以使用AlamoFire庫為例,先創(chuàng)建一個將域名映射到ServerTrustPolicy實例,用這個實例初始化一個ServerTrustPolicyManager對象,由這個對象創(chuàng)建SSL鎖定的管理者(Manager)實例,最后調(diào)用ServerTrustPolicy.certificatesInBundle()一個方法就可以返回所有的證書。
防止逆向工程一個方法就是盡量采用Swift語言開發(fā)應(yīng)用程序。 Swift是一種比Objective-C更新的語言,因此逆向工程工具的做得不是很好。還應(yīng)該使用安全的方法來存儲特定環(huán)境的應(yīng)用程序密鑰,比如使用Cocoapods密鑰。其他的方法包括使用代碼混淆、代碼反調(diào)試技術(shù)、誤導(dǎo)性方法名稱、為攻擊者創(chuàng)建陷阱和偽造方法等等。這種方法是一把雙刃劍:迷惑了敵人的同時,使得自己的代碼更難維護(hù),開發(fā)更慢,更容易出錯。
南通iOS開發(fā)培訓(xùn)基礎(chǔ)課程教學(xué) 在iOS應(yīng)用發(fā)布到蘋果應(yīng)用商店之前,必須對應(yīng)用進(jìn)行安全審核。并不一定非得花大量資金聘請外部黑客團(tuán)隊做攻防測試。開發(fā)者在開發(fā)過程中重視上述三個常見的“坑”,可以大大減少用戶敏感數(shù)據(jù)泄露的風(fēng)險。
溫馨提示:
專業(yè)老師1對1為您解答 馬上填寫,¥1000 元豪禮免費領(lǐng)!
掃一掃
獲取更多福利
獵學(xué)網(wǎng)企業(yè)微信
獵學(xué)網(wǎng)訂閱號
獵學(xué)網(wǎng)服務(wù)號