[译] 开源软件和闭源软件该如何选择?

704 阅读7分钟
原文链接: coyee.com

“如果你惟一的工具是锤子,那么,你往往会把一切事物都看成钉子。”-- 亚伯拉罕·马斯洛

当涉及到商业和开源工具(即付费和免费软件),如果不考虑自身情况,行业背景,和论坛社区,那么关于哪一类软件会更好的发展的辩论是没有意义的,我个人认为,不可能来明确的证明哪一类软件在任何情况下都是最好的。如果世界上最好的开源代码扫描工具没有在你的代码上运行,那么它也不能为你做任何事情。

与开源软件的“开放”相比,闭源软件的专属的特性是可怕的。它的源代码是封闭的、不可知的。 并且是由潜在危害的实体(或者,如果危害性不是特别高,它们可能消失并将它们的用户处于永久不支持的状态)控制的。专有软件可能的价格标签让你公司的安全预算遥不可及。最后,如果出现一些错误,需要依靠专门的技术支持,这可能引起或打破的安全性的操作。

信不信由你,尽管获得开源软件或加入社区论坛是如何的自由,但是使用开源软件是有相关费用的。当把未审查的软件安装到你的环境中,它应该接受检查和扫描。如果你不支付和开源软件开发团队的支持合同,开发者们只能依靠社区支持和内部技术来保持一个开源软件的工作。

这些 技术债务 不像商业闭源软件的倡导者说的那么夸张,你可能会相信,但是也不是像开源提倡推广者们说的根本不存在。这些因素都要考虑到选择一款软件的决策中,但是不要让支持或审查影响你,从而偏离了整体的适应性。

超越马斯洛的锤子

让我们暂时从软件上退一步,并思考我的工具箱里有八个不同的锤子这一事实。现在,我相信有些人使用扳手来挂图片。而对于我来说,每一个锤子用于不同的目的,而不是所有的锤子都用来钉钉子。我的拆迁锤在现有的结构上打洞。同时,我的槌锤用来敲击定位,还有,当我使用金属时我的圆头手锤帮助我摆脱麻烦。就像我实体工具箱,我的安全工具箱有多种工具,乍一看可能都看起来很相像,但实际上各自有不同的用途。

识别、补救甚至防止漏洞应该是任何安全团队的目标。 如果您的安全工具箱仅包含开源或仅关闭的源软件,您可能对手头的工作缺少装备。 让我们来认识一些不同的工具,这样你不必把一切事物都看成钉子。

1. 加强源代码分析器

Hewlett Packard’s的加强源代码分析器 (SCA) 是第一个自动代码扫描器之一,它比在代码中搜索strcpy()实例做的更多。它可以扫描30多种语言,适用于具有多样化开发环境和大量应用程序开发的组织。 这个应用程序扫描器中的“怪物”作为常规脚本构建的一部分时扫描效果最佳。

虽然可以从开发人员的工作站运行,但是扫描代码的时间量和硬件资源可能对个人来说有更多的阻碍。定期扫描出来的报告可以上传到团队协作服务器上,以便于进行进一步的分析和解决问题。内置的GUI是基于Eclipse,并为开发人员提供在跟踪数据和调用时所使用的许多功能。

这是一个高性能的工具,可以分析各种编程语言和框架,但它也带有一个高性能的价格标签。

  • 价格: ?$
  • 目标客户:企业和团体
  • 目标语言: C, C++, Java, JSP, .NET, ASP.NET, classic Active Server Pages (ASP), ColdFusion, PHP, Visual Basic 6, VBScript, JavaScript, PL/SQL, T-SQL, Python, Objective-C, COBOL
  • 理想的运行环境: 每夜和每周在构建服务器上构建

IBM对Fortify的SCA的回答则是另一个企业级工具,是一个安全测试工具套件的一部分。 此工具最好作为构建过程的一部分运行,其中结果与先前的扫描结合。 该工具允许向开发人员分配新扫描的漏洞。 扫描的结果是一样的,但 Appscan Source 的GUI不提供相应数量的开发者友好工具。 此外,要确定漏洞是否为误报可能需要在另一个IDE(例如Eclipse)中打开项目,因为Appscan Source的GUI 有许多功能无法使用,而这些功能是开发人员需要理解代码时习惯使用的。

  • 价格::?$
  • 目标客户:企业和团体
  • 目标语言:C, C++, .NET, Java, JSP, JavaScript, ColdFusion, Classic ASP, PHP, Perl, Visual Basic 6, PL/SQL, T-SQL, COBOL
  • 理想运行环境 每夜和每周在构建服务器上构建

这个开源工具可以为任何Java开发团队提供价值。 它从专注于从上层到底层来扫描Java代码中的错误。 如果你正在运行开发环境不是Java编程,那么这个工具将不能为之工作。 这个工具包括对安全或质量问题的扫描。

开发人员可以直接使用 Findbugs 。 它具有与许多开发级别的IDE和自动构建服务器配合使用的插件。

  • 价格:开源免费
  • 目标用户: 企业和团体
  • 目标语言: Java
  • 理想运行时间: 开发人员的编码时运行或用于构建服务器

虽然不是一个精确的安全分析工具,但 SonarQube 可以将其他应用程序识别的安全漏洞合并到其质量检查中。 高质量软件是安全的。 SonarQube可以提供额外的功能,帮助团队确保他们的软件是状况良好的。 这个开源软件可以通过配置来与各种构建服务器一起工作,以便于帮助想要掌握其质量和安全的问题团队。 Sonarqube 可以接受来自闭源和开源工具的调查,并可以将开源与闭源讨论转化为富有成效的对话。

  • 价格: 开源免费
  • 目标用户: 企业和团体
  • 目标语言: ABAP, Android (Java), C, C++, CSS, Objective-C, COBOL, C#, Flex, Forms, Groovy, Java, JavaScript, Natural, PHP, PL/SQL, Swift, Visual Basic 6, Web, XML, Python
  • 理想运行时间:在构建的时候

Klockwork 在2000年初从北电网络分离,成为商业性质的内部开发工具。软件运行时像一个拼写检查器,当开发人员输入错误或漏洞时指出其漏洞和错误。这样也关闭了反馈回路,并训练开发者不将漏洞提交回代码仓库。不是等待每周的扫描,而是将安全补丁随机分配给团队成员Klockwork Insight让开发人员在相应的阶段负有修复和学习的责任。

  • 价格: ?
  • 目标用户:企业和团体
  • 目标语言: C, C++, C#, Java
  • 理想运行时间:开发人员编码时

另一个实时的,以开发人员为中心的工具是 SecureAssist 。此工具集成到开发人员的IDE中,并在开发人员工作时识别漏洞。而且还识别安全问题,并提供现场指导以帮助开发人员修复已识别的问题。它最好由开发人员在编写代码时使用,而不是扫描现有的代码库。

对于仍在构建其代码库的年轻公司或从头开始的团队,SecureAssist提供了所有需要用到的源代码分析。具有更大代码库的企业可能需要一个适合于扫描大量代码库的工具,但是仍然可以从即时代码检查器中受益,以防止引入新的漏洞。

  • 价格: $
  • 目标用户:Enterprises and Teams
  • 目标语言:Java, .NET, PHP
  • 理想运行时间::开发人员编码时

无论您是需要使用Fortify或Appscan这样的大锤来完善整个应用程序,使用SonarQube完成锤将安全细节锁定到位,还是用Klockwork 或 SecureAssist 这样的圆锤头将软件塑造成安全的解决方案。每个人会都从自动源代码分析工具提供的安全性中获益。