如今在各大应用商店中,移动应用的种类越来越多、售价也越来越亲民了。然而随着它们的蓬勃发展,移动应用的开发人员不仅要能够根据客户的需求提供各式各样新的功能,还要密切注意应用本身的安全问题。
如果适当的安全控制没能在应用程序的设计阶段就到位的话,那么驻留在该应用程序中的数据将很可能处于危险境地,同时也会成为该移动应用的关键安全隐患。其实,随着各类移动应用在市场上的广泛使用,与之相伴的各种高位漏洞也呈大幅上升的趋势。
如今,各类黑客经常以移动应用为目标,通过恶意获取不同消费者的个人信息和消费细节来从中牟利。因此,开发人员在为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