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