如何确保移动应用开发的安全性?

发表时间: 2021-09-29 09:32

大多数安全软件开发原则也适用于移动应用程序。但是,对于移动应用程序,开发人员需要关注某些关键领域才能获得最佳结果。以下是行业专家认可的一些做法:

1)最少的应用程序权限

权限赋予应用程序更有效运行的自由和权力。但是,与此同时,它们使应用程序容易受到黑客的攻击。任何应用程序都不应寻求超出其功能范围的许可请求。开发人员应避免回收现有的库,而应构建有选择地寻求许可的新库。

2)保护敏感信息

如果没有适当的保护机制,存储在应用程序中的机密数据很容易受到攻击。不法分子可以通过逆向工程代码提取重要信息。如果可能,应减少存储在设备上的数据量以将风险降至最低。

3)固定证书

证书锁定是一种操作程序,可帮助应用程序在连接到不安全网络时抵御中间人攻击。然而,该技术有其自身的局限性。在某些情况下,它可能不支持网络检测和响应工具,因为流量检查变得更加艰巨。也可能出现兼容性问题。某些浏览器不帮助证书固定,这使得混合应用程序的工作更加困难。

4)增强数据安全性

应制定数据安全政策和指南,以确保用户可以轻松避免陷入黑客的陷阱。这可以包括在设备之间传输信息时实施良好的数据加密,以及在必要时使用防火墙和安全工具。您可以参考为Android 和iOS制定的指南。

5)不保存密码

许多应用程序要求用户保存密码,以防止他们重复输入登录凭据。在发生移动盗窃事件时,可以收集这些密码以访问个人信息。同样,如果密码以未加密的格式保存,则它们被收集的机会非常高。为防止这种情况发生,开发人员应避免在移动设备上保存密码。相反,它们应该保存在应用程序服务器上,这样即使移动设备丢失,受影响的用户也可以通过登录服务器来更改它们。

6)强制会话注销

经常看到用户忘记退出他们正在使用的网站或应用程序。如果它是银行应用程序或任何其他支付应用程序,这可能是有害的。出于这个原因,支付应用程序往往会在一段时间不活动或每次注销后结束用户的会话,以提高安全性。开发人员必须对所有以业务和消费者为中心的应用程序强制执行会话注销,即使他们希望用户具有很高的文化水平。

7)咨询安全专家

无论内部安全团队多么有经验,对应用程序的外部观点都可以提供不同的视角。有几家安全公司(例如蛮犀安全)和应用程序可以部署来识别漏洞并减少被入侵的机会。公司应该鼓励他们的开发团队获得由第三方服务提供商评估的应用程序的安全功能。

8)应用多重身份验证

当用户登录应用程序时,多重身份验证增加了额外的安全层。多因素身份验证方法还掩盖了容易被黑客猜到并危及应用程序安全的弱密码。多因素身份验证提供了一个密码,必须与密码一起输入才能登录设备或应用程序。此代码通过短信、电子邮件、Google 身份验证器或生物识别方法发送。不在应用程序上强制执行多重身份验证可能会让黑客猜测弱密码。

9)渗透测试

进行渗透测试是为了检查应用程序中的已知漏洞。它旨在找出攻击者可能使用的潜在弱点并危及最终应用程序的安全。它涉及检查弱密码策略、未加密的数据、第三方应用程序的权限、无密码到期协议等。通过重现潜在黑客的行为,安全团队确定应用程序中是否存在任何弱点。建议定期执行渗透测试以确保应用程序安全。白盒测试和黑盒测试是其他类型的渗透测试措施,可用于检查安全问题。

10)防止使用个人设备

为了避免购买系统的间接成本,许多公司更愿意让员工自带笔记本电脑或智能设备进行开发。这可能会使网络受到大量感染,这些感染可能已经收集在员工的设备上。恶意软件和特洛伊木马以这种方式从一台设备传播到另一台设备。因此,制定安全策略并防止此类做法非常重要。连接到办公网络的每台设备都应该使用防火墙、防病毒和反垃圾邮件软件进行彻底扫描,或者根本不允许连接。

11)谨慎使用第三方库

使用第三方库可以减少开发人员完成的编码量并简化应用程序开发过程。但是,这可能是一个冒险的提议。例如,GNU C 库存在一个允许缓冲区溢出的安全漏洞,黑客可以利用该漏洞远程执行恶意代码并使设备崩溃。在为 GNU 项目做出贡献的开源社区在 2016 年发布修复程序之前,它持续了八年。因此,开发人员应限制使用大量库并制定处理库的策略,以保护应用程序免受攻击。

12)限制用户权限

用户获得的权限越多,应用程序的安全性受到威胁的机会就越大。如果拥有大量权限的用户遭到黑客攻击,黑客会对应用程序造成难以想象的破坏。同样,应用程序也不应该要求设备上它不需要的功能的权限:例如,读取短信、DCIM 文件夹等的权限。

13)会话处理

与台式机相比,移动设备上的会话持续时间更长。这会增加服务器负载。使用令牌而不是设备标识符来建立会话是一个更安全的选择。令牌可以在需要时撤销,并且在设备丢失或被盗的情况下更加安全。开发人员还应考虑将会话过期作为一种选择。启用远程擦除丢失和被盗设备的数据也是保留在应用程序中的一个很好的安全选项。

14)安全地管理密钥

密钥管理对于加密至关重要。硬编码密钥对应用程序的安全有害,开发人员应避免使用。如果有人窃取了密钥,他们可以轻松控制设备。密钥应存储在安全的容器中,通常不在用户的设备上。为此目的,一些常用的加密协议是 MD5 哈希和 SHA1。开发人员应使用最新的加密标准和 API,例如使用 SHA-256 散列的 256 位加密。

15)定期测试应用程序

保护移动应用程序不是一次性过程。每天都会出现新的威胁,需要更新以修补这些威胁,以免它们对用户的设备造成任何损坏。2016 年和 2017 年,勒索软件 WannaCry 和 NotPetya 的传播等漏洞对用户的 Windows 设备进行加密并要求以比特币支付赎金,这在开发者社区中引起了足够的警觉,使他们不得不认真对待网络安全。尽管这种勒索软件在很大程度上影响了台式机,但其传播的迅速性和有效性表明需要对应用程序进行定期测试,因为新的威胁总是迫在眉睫。

16)确保 HTTPS 通信

它代表超文本传输协议安全,与 HTTP 通信形成对比。当数据通过网络传输时,HTTPS 提供数据的安全性。通信协议由传输层安全 (TLS) 加密。TLS 和安全套接字层 (SSL) 是加密协议,可确保各种通信渠道上的数据隐私。另一方面,HTTP 数据是未加密、未验证和无法验证的,这使得黑客可以窥探用户内容。开发人员必须确保应用程序连接的服务器上的 SSL 证书有效,并仅使用 HTTPS 协议在应用程序和服务器之间发送数据。

17)加密缓存

缓存是将数据临时保存在用户设备上的软件组件。这用于防止数据检索的延迟。如果未加密,黑客可以轻松访问缓存中存储的数据。有时应用程序不会在会话结束后删除其数据,并且缓存不会过期。如果这些缓存文件落入坏人之手,黑客可以操纵它来访问用户数据或服务器。

18)咨询蛮犀安全

蛮犀安全咨询服务体系是依据ISO27001、信息安全等级保护、SOX、IT内控等国际、国内优秀的信息安全体系标准,遵循良好的思路框架,为客户提供标准政策合规性咨询服务,在遵循适度安全的原则基础上,帮助客户平衡成本与效益,合理部署和利用信息安全的信任体系、防御体系、监控体系、应急体系等重要的基础设施和组织架构,制订合适的安全策略、措施和方案,从而确保组织机构具有完成其使命的信息安全保障能力。