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