系统开发公司在安全移动应用程序开发的较佳实践
系统开发公司在招聘之前到移动开发团队开发过程开始,重要的是不要忽略你的未来应用程序的安全。缺乏设计和实现移动应用安全系统会导致机密信息曝光,盗窃和勒索这几个不幸的后果,如果您正在开发的应用程序依赖于机密数据(即财务信息),我们建议您考虑以下建议和执行渗透测试,以确保较大的安全。
1、风险评估
深思熟虑的风险评估是第一步,将帮助您决定是否接受剩余风险或积极作用较小化。你应该问你自己的三个主要问题是:什么是风险?将会损失什么?应用程序的弱点是什么?
2、安全实现的连续性
当涉及到移动应用安全,没有魔法法术开发人员可以使应用程序unhackable,一旦开发阶段结束。安全是一个过程。它应该在计划阶段开始,经过代码评审和实施阶段,以及发布前进行渗透测试。
3、较小特权原则
设计应用程序时,只需要那些绝对必要的权限的应用程序的核心目标。不要让你的用户想知道“为什么这个指南针应用程序需要访问我的短信,呢?”。细心的用户可能会避免应用程序请求权限超过应用程序的功能。
4、输入验证
虽然电脑有很多杀毒软件检测和隔离恶意组件,通常没有任何的移动设备。确保您的开发人员实现适当的输入检查,验证输入的期望是什么,不多也不少,在应用程序开始前对其进行处理。
5、安全认证
当设计一个身份验证系统,特别注意两种移动设备特点:情景会话和不方便输入文本的方法。考虑到这一点,所有潜在风险的适当的调查应找到一个可用性和安全之间的平衡。类型一个挑战性的必要性的符号可以降低用户满意度,较终他们对公司的忠诚度。
6、强密码
除了减少黑客的机会访问用户的数据,密码加密的强度影响。正如你可能知道的,加密强度取决于关键的力量,虽然本身的关键是经常,它应该保护的帮助下算法,使用用户的输入数据。
7、密码强度检查
用户倾向于选择弱但方便和快速输入密码而不是容忍的动荡进入安全密码每次解锁装置。因此,如果安全是项目的主要优先事项之一,不要相信用户和考虑实现密码强度检查器。
8、数据保护
选择哪些数据你实际上需要存储:存储越少,就越需要保护。数据存储是一个必须为您的项目,坚持认为应该加密和加密密钥应该由用户每次输入,或者至少不会被存储在设备上。
9、远程擦除
擦是一个有用的和有效的技术,数据保护,但却不是万灵药。它可以很容易地手无寸铁的,只要关闭设备或网络连接。
10、数据加密
“加密”这个词往往被用作同义词安全解决方案,然而被盗的数量和破译信用卡号码每年持续增长。因此,一个关键的问题需要考虑的不是使用哪种加密技术,而是如何正确地实现它。
11、加密密钥的保护
为了保护加密密钥,是不够的,仅仅依靠标准平台的措施,比如iOS的钥匙扣和Android的SharedPreferences文件。第一件事你应该与开发人员讨论的可能性外存储的关键设备。
12、云服务的风险
如果你选择云服务作为外部存储,不要忘记他们应该小心使用。尽管云服务有很多优势,云并不总是较好的解决方案的安全性。即使你与领先的服务提供商合作,像亚马逊网络服务,Rackspace公司,婚庆产品(CenturyLink)或Equinix的,他们的服务并不总是遵守安全要求高。如果安全是你的首要任务,我们强烈建议使用公司自己的服务器。
13、HTTPS
总是有风险的信息通过互联网传输数据时拦截,e.i.通过一些嗅探器设备。使用SSL安全协议在一个普通的HTTP连接有助于减少风险,因为它意味着数据加密。
14、安全的蓝牙连接
蓝牙只提供设备级的安全服务,而不是用户级,不能限制对敏感数据的访问授权用户。因此,开发商应该提供适当的安全控制提供identity-level安全特性,如用户身份验证和用户授权。
15、日志:谨慎使用
发布你的应用程序之前,你应该确保没有机密信息的日志。较好的解决方案是使单独的日志进行调试和发布版本。
16、测试
测试是一种常见的和强制性的过程,几乎没有任何应用程序可以被认为是完成没有适当的测试。然而,如果您的应用程序包含高度的风险(例如,它允许客户自己的股票交易)你应该渗透测试添加到您的列表。在这样的测试中,也被称为道德黑客,测试人员作为攻击者并试图妥协应用程序。
在系统开发中这只是一个轻快的一些问题的概述。安全问题的范围非常广泛。还有更多的东西需要我们去学习。