静态和动态代码分析:确保应用安全的关键因素

日期: 2009-07-12 作者:Michael Cobb翻译:Sean 来源:TechTarget中国 英文

随着人们对越来越依赖Web,而且基于Web应用程序发起的攻击越来越多,Bill Gates适时地发出了号召,他呼吁企业在开发的各个阶段需要重视安全问题。为了分享他们在安全开发过程中积累的实践经验,微软发布了安全开发生命周期(Security Development Lifecyle, SDL )。SDL对产品进行静态和动态的代码分析,检测它在技术和逻辑上的漏洞,从而确定产品是否能够经得起恶意的攻击。让我们看看在应用安全策略里加入这一程序的好处。

  静态分析是不执行程序,直接用工具自动检查程序的源代码,以分析这些代码在程序运行时的行为。它允许程序员创建代码的图表或图形描述,让程序员们对代码的效……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

随着人们对越来越依赖Web,而且基于Web应用程序发起的攻击越来越多,Bill Gates适时地发出了号召,他呼吁企业在开发的各个阶段需要重视安全问题。为了分享他们在安全开发过程中积累的实践经验,微软发布了安全开发生命周期(Security Development Lifecyle, SDL )。SDL对产品进行静态和动态的代码分析,检测它在技术和逻辑上的漏洞,从而确定产品是否能够经得起恶意的攻击。让我们看看在应用安全策略里加入这一程序的好处。

  静态分析是不执行程序,直接用工具自动检查程序的源代码,以分析这些代码在程序运行时的行为。它允许程序员创建代码的图表或图形描述,让程序员们对代码的效果有一个更好的理解。然后需要有经验丰富的开发者分析结果并检查其中的可疑之处,排除代码错误。编译器只能识别出语法规则上的错误,如输入错误和语法错误。静态分析则检查源代码中存在的问题,例如通过了编译器会造成缓冲区溢出、无效指针引用、未初始化变量等漏洞这样的问题。

  但是,有些问题在静态分析的过程中还是难以预见的。多种功能的相互作用可能产生预料不到的错误,这些错误在组件级集成(component-level intergration)、系统集成(system intergration)或最终部署时才显现出来。因此,在确定软件的功能齐全后,就应该进行动态分析。动态分析揭示应用程序在执行时的行为,以及它与其它进程、与操作系统本身是如何交互的。静态分析可以在开发早期发现错误,动态分析则是模拟真实攻击情景测试代码。

  寻找和解决编程错误可能会非常耗时,但这是绝对值得的。事实上,按照Gartner的数据,在测试过程中排除安全漏洞的成本不到从成品中排除漏洞成本的2%。为了帮助您简化这一测试过程,有许多代码分析工具可供选择,其中许多都是免费的。http://testingfaqs.org/t-static.html 这个页面上提供了一份完整的工具清单,其中包括metric和lint-like(能标出可疑语句的工具)。如果你用的是微软的开发环境,那微软已经提供了一些免费的代码分析工具,如PREfix、PREfast和FxCop 。

  把静态和动态代码分析纳入到你的的安全策略中可以降低最终版本中出现漏洞的风险,下面这些措施同样也能帮助你提高软件的整体质量和安全性:

  1. 制定和实施一套应用安全生命周期(application security lifecycle)。适当地实施应用安全生命周期可以帮你降低消除漏洞的费用,提升工作的效率。比如微软发现,在实施SDL之后,外部人员发现漏洞的机率大大地降低了。
  2. 在开发阶段就进行安全评估。许多开发人员已经发现,这样做反而能够缩短软件开发的总时间。
  3. 如果软件的业务逻辑改变了,那一定要再重复进行安全评估。评估每一个改动对软件整体安全性所造成的影响是非常必要的。

翻译

Sean
Sean

相关推荐