三、人工验证
在借助威胁建模检查了设计或架构后,开发者应当执行某种水平的人工验证。人工验证的范围和水平由移动应用所带来的风险量决定。移动应用的大小和复杂性决定验证的等级或水平,当然所谓的验证必须依靠反复的代码检查和渗透测试。企业必须确保移动应用的验证专家与内部团队协同工作,而且,最好在企业内部组建一个强大的测试团队。
四、完全的动态和静态验证
动态和静态验证技术仍不太成熟,同样,可用的移动应用的动态验证技术也不多。不过,这并不意味着这些安全技术不能嵌入到安全的移动开发过程中。在有些技术成为主流并且很有效时,开发者就应当开始实行使用静态方法,评估移动应用代码,还要保证不会滥用API,并对其它的安全控制进行正确编码。当然,开发者也可以借助开源项目,使用静态分析查找Java代码中的漏洞,甚至可以将潜在的威胁类型分为多个等级。
在此重点说一下静态分析。有许多技术可以分析静态代码,查找潜在的漏洞。这些技术往往源自编译技术,主要分为数据流分析、控制流图、污点分析、词法分析等。
数据流分析用于收集关于静态软件数据的运行时信息,它主要分析基本块、数据流、控制路径等。数据流分析从软件的代码中收集程序的语义信息, 并通过一组简单方程将程序不同位置的语义信息联系起来。通过数据流分析, 分析者不必运行程序就知道可以程序运行时的行为。在进行数据流分析前, 为了便于收集和分析,往往需要把源程序转换成控制流图。
控制流图是指通过利用代表基本块的节点图来抽象地来表示软件。图中的一个节点代表一个块;定向边用于代表从一个块到另一个块的跳转(路径)。如果一个节点仅有一个退出边,它就被称为“入口”块,如果一个节点仅有一个“入口”边,此节点即为“退出”块。
在上图中的“节点1”即为“入口”块,“节点6”为“退出”块。
污点分析试图确认被用户的可控输入“污染”的变量,并跟踪这些变量,查找可能易受攻击的功能。如果被污染的变量就没有被净化,它就成为一个漏洞。
有些编程语言如Perl和Ruby有内置的污点检查,并在某些情况下(如通过CGI接受数据)启用此功能。
词法分析是一个将字符序列转换为单词(Token)序列的过程。这个阶段的任务是从左到右一个字符一个字符地读入源程序,即对构成源程序的字符流进行扫描然后根据构词规则识别单词(也称单词符号或符号)。
五、限制移动应用的访问许可
开发“应用许可访问”的目的是为了分配或剥夺用户对移动应用的访问权,例如,安卓要求:如果用户要使用移动应用,就应当接受该应用所要求的全部许可。此外,在以root权限使用设备时,还可以根据某个具体的移动应用来管理授权。许可限制可以保护链接,防止移动应用通过不合法的手段去访问某些私有信息。
此文远远不能解决移动应用开发的所有安全问题,作者仅希望它能够起到抛砖引玉作用。建议有志于此的开发者,参考AT&T的企业移动安全标准。
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
相关推荐
-
如何加强移动应用开发安全?(一)
在开发移动应用时,开发者必须自始至终实施一套健全的安全原则,确保移动应用项目开发的安全,理解操作系统和API之间的不同点是非常重要的。