移動(dòng)應(yīng)用開(kāi)發(fā)需要知曉的10大安全問(wèn)題
譯文【51CTO.com快譯】如今在各大應(yīng)用商店中,移動(dòng)應(yīng)用的種類(lèi)越來(lái)越多、售價(jià)也越來(lái)越親民了。然而隨著它們的蓬勃發(fā)展,移動(dòng)應(yīng)用的開(kāi)發(fā)人員不僅要能夠根據(jù)客戶(hù)的需求提供各式各樣新的功能,還要密切注意應(yīng)用本身的安全問(wèn)題。
如果適當(dāng)?shù)陌踩刂茮](méi)能在應(yīng)用程序的設(shè)計(jì)階段就到位的話,那么駐留在該應(yīng)用程序中的數(shù)據(jù)將很可能處于危險(xiǎn)境地,同時(shí)也會(huì)成為該移動(dòng)應(yīng)用的關(guān)鍵安全隱患。其實(shí),隨著各類(lèi)移動(dòng)應(yīng)用在市場(chǎng)上的廣泛使用,與之相伴的各種高位漏洞也呈大幅上升的趨勢(shì)。
如今,各類(lèi)黑客經(jīng)常以移動(dòng)應(yīng)用為目標(biāo),通過(guò)惡意獲取不同消費(fèi)者的個(gè)人信息和消費(fèi)細(xì)節(jié)來(lái)從中牟利。因此,開(kāi)發(fā)人員在為iOS和Android平臺(tái)構(gòu)建應(yīng)用程序時(shí),需要格外地小心。
下面我將為您列舉一些用于構(gòu)建安全移動(dòng)應(yīng)用的方法:
1. 盡量寫(xiě)出安全的代碼
根據(jù)研究,全球大約有1160萬(wàn)臺(tái)移動(dòng)設(shè)備曾經(jīng)受到過(guò)惡意代碼的影響??梢?jiàn),黑客們最善于通過(guò)發(fā)現(xiàn)和利用移動(dòng)應(yīng)用代碼中的各種漏洞和功能缺陷,來(lái)展開(kāi)攻擊。因此,您需要盡量編寫(xiě)出具有高度安全特性的代碼。
同時(shí),黑客們可以利用反向工程的方式,對(duì)您的應(yīng)用代碼進(jìn)行篡改和濫用。所以,您應(yīng)該盡量對(duì)自己的程序進(jìn)行安全的硬編碼,并遵循敏捷的開(kāi)發(fā)模式,以便能夠按需并持續(xù)對(duì)代碼進(jìn)行審查,或予以更新。同時(shí),對(duì)代碼進(jìn)行安全加固和使用數(shù)字簽名也是兩種最佳的實(shí)踐方法,這些都有利于編寫(xiě)出高質(zhì)量的程序代碼。
2. 加密數(shù)據(jù)
眾所周知,將傳輸過(guò)程中的數(shù)據(jù)進(jìn)行加密,便可轉(zhuǎn)換為一種只有采取了解密操作之后,方可讀取的形式。這是在復(fù)雜且“兇險(xiǎn)”的環(huán)境中,保護(hù)數(shù)據(jù)的一種較為普遍且有效的方法。
因此,就算數(shù)據(jù)被截獲,只要黑客對(duì)它們無(wú)法破解成功,那么這些數(shù)據(jù)對(duì)他們來(lái)說(shuō)也是毫無(wú)用處的。所以說(shuō),在開(kāi)發(fā)一款移動(dòng)應(yīng)用的時(shí)候,我們應(yīng)當(dāng)對(duì)于由它來(lái)收發(fā)以及本地存儲(chǔ)的數(shù)據(jù)提供必要的加密服務(wù),這同樣也是移動(dòng)安全的一種良好的踐行方式。
3. 謹(jǐn)慎地使用各種庫(kù)
通常情況下,一款移動(dòng)應(yīng)用在代碼構(gòu)建的時(shí)候,會(huì)需要調(diào)用一些第三方的庫(kù)。不過(guò)請(qǐng)記住,不要輕易信任那些調(diào)用庫(kù),因?yàn)樗鼈兺紵o(wú)法保證自身的安全。正所謂“紙上得來(lái)終覺(jué)淺,絕知此事要躬行”,您在使用各種類(lèi)型的庫(kù)之前,請(qǐng)事先做好代碼基本調(diào)用的相關(guān)測(cè)試。攻擊者通常會(huì)通過(guò)掃描,以獲知隱藏在各種調(diào)用庫(kù)中的缺陷,進(jìn)而使用不同的惡意代碼來(lái)破壞應(yīng)用、甚至搞垮整個(gè)移動(dòng)系統(tǒng)。
4. 使用授權(quán)的API
從黑客的角度來(lái)看,他們可以通過(guò)獲取各種已授權(quán)的信息緩存,來(lái)進(jìn)一步得到系統(tǒng)級(jí)別的身份驗(yàn)證信息。因此,請(qǐng)您務(wù)必在開(kāi)發(fā)應(yīng)用代碼的過(guò)程中,使用那些已經(jīng)授權(quán)了的API。
同時(shí)根據(jù)訪問(wèn)控制的原則,有些專(zhuān)家會(huì)建議我們對(duì)所有的API實(shí)施一種中央授權(quán)管理的機(jī)制,以便移動(dòng)應(yīng)用程序能夠按需和按規(guī)則獲得必要的安全權(quán)限。
5. 使用高級(jí)別的身份驗(yàn)證
可以說(shuō),身份驗(yàn)證機(jī)制是移動(dòng)應(yīng)用安全中最為關(guān)鍵的一個(gè)環(huán)節(jié)。較弱的身份驗(yàn)證往往會(huì)給移動(dòng)應(yīng)用帶來(lái)一些容易被利用和攻擊的漏洞。開(kāi)發(fā)人員應(yīng)當(dāng)持續(xù)從用戶(hù)的角度去考慮使用一些較強(qiáng)的身份驗(yàn)證方式,來(lái)維持應(yīng)用的安全態(tài)勢(shì)。
最常見(jiàn)的身份驗(yàn)證模式之一就是密碼。請(qǐng)您啟用強(qiáng)密碼策略,以實(shí)現(xiàn)在入口處抵御各種攻擊的嘗試。同時(shí),我們不能僅在用戶(hù)登錄時(shí)驗(yàn)證其身份,還應(yīng)確保用戶(hù)在每一次修改身份信息(profile)與數(shù)據(jù),以及進(jìn)行電子支付等相關(guān)操作時(shí),進(jìn)行身份的重新驗(yàn)證。
當(dāng)然,密碼只能驗(yàn)證“你知道什么(What you know)”的問(wèn)題。因此您還應(yīng)通過(guò)使用一次性口令(One-time Password,OTP)登錄和電子郵件,來(lái)驗(yàn)證“你有什么(What you have)”;以及通過(guò)生物特征識(shí)別,來(lái)驗(yàn)證“你是什么(What you are)”。通過(guò)配合使用這些多因素的身份驗(yàn)證方式,我們就能夠進(jìn)一步加固應(yīng)用本身的安全性。
6. 為應(yīng)用開(kāi)發(fā)篡改檢測(cè)技術(shù)
通常情況下,您可以通過(guò)設(shè)置日志活動(dòng)的觸發(fā)器,來(lái)監(jiān)控自研的移動(dòng)應(yīng)用,從而對(duì)于任何代碼的變更產(chǎn)生持續(xù)的記錄。籍此,一旦您的代碼被惡意進(jìn)行篡改或被插入了非法代碼,您都能及時(shí)地獲取到相關(guān)的警報(bào)信息。
7. 提供最小特權(quán)
最小特權(quán)原則屬于代碼安全領(lǐng)域的傳統(tǒng)實(shí)務(wù)。該原理可以體現(xiàn)在兩個(gè)方面:
- 給用戶(hù)區(qū)分不同的角色,只給通過(guò)認(rèn)證的用戶(hù)提供與其角色相符的最小訪問(wèn)權(quán)限。
- 移動(dòng)應(yīng)用只從系統(tǒng)那里獲取與自己的服務(wù)相關(guān)且必要的使用權(quán)限。
籍此,我們來(lái)為自己的應(yīng)用維護(hù)一張最小的協(xié)作關(guān)系網(wǎng)絡(luò)。
8. 適當(dāng)?shù)臅?huì)話管理
通常情況下,在移動(dòng)設(shè)備上會(huì)話所被保留的時(shí)間比在桌面環(huán)境中要長(zhǎng)。因此對(duì)于移動(dòng)應(yīng)用上的會(huì)話來(lái)說(shuō),我們應(yīng)給予更多的預(yù)防。
我們應(yīng)該通過(guò)對(duì)會(huì)話進(jìn)行標(biāo)記、管理、以及運(yùn)用遠(yuǎn)程擦除與注銷(xiāo)功能,來(lái)維持移動(dòng)設(shè)備在被盜或丟失情況下的數(shù)據(jù)安全。
9. 使用良好的加密工具和技術(shù)
前文提到了加密,而密鑰的管理則是數(shù)據(jù)加、解密過(guò)程中的一個(gè)關(guān)鍵環(huán)節(jié),因此我們不應(yīng)直接對(duì)加密密鑰采取簡(jiǎn)單的硬編碼。
您可以首選采用諸如AES和SHA 256之類(lèi)健壯且完備的加密協(xié)議,運(yùn)用最新且受信任的加密算法,并且不要將密鑰簡(jiǎn)單地存儲(chǔ)在本地設(shè)備之上。
10. 反復(fù)測(cè)試
由于我們所處的移動(dòng)環(huán)境瞬息萬(wàn)變,因此反復(fù)進(jìn)行應(yīng)用測(cè)試可能算是一種最為簡(jiǎn)單和直接的應(yīng)對(duì)方案了。為了保護(hù)自行開(kāi)發(fā)出的應(yīng)用,我們還應(yīng)持續(xù)關(guān)注各種安全趨勢(shì)和漏洞披露。
您可以通過(guò)選用各種滲透測(cè)試與仿真模擬程序,來(lái)掃描并發(fā)現(xiàn)當(dāng)前應(yīng)用中的不同漏洞。同時(shí),您也需要為移動(dòng)應(yīng)用開(kāi)發(fā)出各種安全修補(bǔ)程序,并持續(xù)發(fā)布各種更新與補(bǔ)丁,來(lái)減少漏洞并加固程序。
結(jié)論
開(kāi)發(fā)人員通過(guò)遵循上述所提到的各類(lèi)最佳實(shí)踐,才能讓移動(dòng)應(yīng)用的完全性和抗攻擊性有所保障。近年來(lái),網(wǎng)絡(luò)安全事件層出不窮,用戶(hù)的安全意識(shí)也在逐步增強(qiáng),因此他們?cè)讷@取服務(wù)并享受使用便利的同時(shí),更趨向于那些能夠保證數(shù)據(jù)安全和隱私的移動(dòng)應(yīng)用。
原文標(biāo)題:10 Security Issues App Developers Need to Know for Mobile App Development,作者:Nitesh Behani
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】






















