与其他语言相比,Java有多安全-

与其他语言相比,Java有多安全?

与网络安全的其他方面一样,编程语言的安全级别取决于我们所说的“安全”。的确,Java比其他一些常用语言具有更少的已识别漏洞。确实,至少在乍看之下,某些较新的语言似乎比Java更安全。

Java中发现的许多安全漏洞是其流行的结果。广泛的使用意味着成千上万的Bug猎手致力于查找Java语言漏洞,这在该领域为Java提供了不公平的“优势”。同样,某些较新语言(例如Ruby)的隐含安全性可能更能反映其特定用途,而不是完整性。

在本文中,我们将研究最常用的编程语言在安全性方面的排名。我将解释一些因素,这些因素会使一种语言的安全性比另一种语言低,以及为什么已识别的漏洞在过去几年中增加了这么多。最后,我将建议Java开发人员减少代码漏洞的几种方法。

底线:从安全角度来看,我们所知道的漏洞要比我们所不知道的漏洞好。Java有多安全?

最近对最常用编程语言漏洞的研究来自开放源代码安全和许可证合规性平台WhiteSource。WhiteSource研究了七种最受欢迎的开源编程语言:C,Java,JavaScript,Python,Ruby,PHP和C ++。然后,分析人员使用了多种来源,根据发现的漏洞数量对语言进行排名。为什么要开源?

对开源语言进行排名的决定并非偶然。当涉及到漏洞时,许多专有语言(包括开源语言的专有实现)的透明性要差得多。对于私营公司而言,在其产品中发布安全漏洞没有商业意义,因此对于这些语言的漏洞级别,我们基本上还是一无所知。我们所知道的缺陷比我们所不知道的要容易得多。

根据WhiteSource的研究,到目前为止,最易受攻击的编程语言是C,占报告的所有漏洞的47%。该排名不会令有经验的程序员感到惊讶,但其他结果可能会令人惊讶。PHP排在第二位,占17%,其次是Java,占12%,JavaScript排在前四位,占11%。在这些“领导者”之后的是Python,C ++和Ruby。

[ 在这个由12部分组成的综合课程中,从入门概念到高级设计模式学习Java!]了解编程语言的安全性

接下来,我们应该问为什么某些编程语言比其他编程语言更容易受到攻击。根据我引用的研究,您可能会得出结论,C代表了巨大的安全威胁。但是请考虑使用C比列表中的其他任何语言都使用了更长的时间。正如斯蒂芬·特纳(Stephen Turner)在《技术研究杂志》上写道的那样,“编程语言就像遗传学一样,因为有一些具有共同特征的祖先已经泛滥成灾。”

作为列表中最古老的语言,C是在与相对较新的语言(如Java和Ruby)完全不同的威胁环境中开发的。正如WhiteSource指出的那样,C的相对年龄意味着它拥有相应数量的书面代码。C还是用于主要基础设施(如OpenSSL和Linux内核)的语言之一。数量和集中性的结合会导致更多已知的开源漏洞。

尽管Java在此分析中表现良好,但作者强调了两种类型的漏洞,这些漏洞尤其会影响Java。首先,他们指出,US-CERT长期以来一直警告我们有关Java的漏洞,主要是通过Web浏览器进行的日志注入攻击。可以通过对提交的输入进行验证或身份验证来避免此类攻击,但是开发人员通常不愿彻底验证输入,因为担心这会使他们的应用程序对用户的友好程度降低。

其次,Java特别容易受到访问控制漏洞之后的信任利用的影响。尽管自2013年以来认证流程有所改进,但许多开发人员仍依赖不可靠的权威机构颁发的证书。可能会获得不如应有的严格的证书。在《技术研究杂志》上引用的US-CERT 警告说,这为远程攻击者执行任意代码提供了方便。

Java相对较低的漏洞与C形成了有趣的对比。Java在C诞生之后很久就已经在威胁意识更高的环境中开发,因此Java的安全性要高得多也就不足为奇了。同样,尽管Ruby看起来比Java更安全,但这可以由该语言的相对年轻及其小众应用程序来解释。安全漏洞呈上升趋势,其中包括

WhiteSource报告说,“在过去两年中,所有语言中已知的开源安全漏洞的数量大大增加了”。尽管自2015年以来,Java中的漏洞总数一直在稳步下降,但最近的漏洞数量激增需要作出解释。我们可以将此增加归因于两个因素。

首先,存在漏洞赏金,这是一个相对较新的趋势,成千上万的技术专业人员选择一种语言来查找漏洞。这些至少占了开源安全漏洞增加的部分原因。此外,通常假设威胁搜寻者会平等地扫描所有语言,但这不是事实。作为Web开发中最常用的语言之一,Java是威胁猎人的重要目标。在这种情况下,Java在已知漏洞方面的第三位开始显得很低。

软件系统也比10年前复杂了一个数量级,这是Java和其他语言中发现的漏洞数量不断增加的另一个主要因素。在智能手机应用程序可能成为感染源并且每个公司都必须拥有启用JavaScript的网站的世界中,网站漏洞的数量呈指数级增长也就不足为奇了。加上长期以来网络安全专业人员的短缺,对于网络安全的未来,事情开始变得严峻。如何避免Java安全漏洞

阅读有关安全漏洞的研究可能会使您心跳加速,但不要担心:在应用程序安全性方面,Java开发人员处于有利地位。成千上万的专业人员扫描该语言中的漏洞,我们很有可能知道该语言中很大比例的漏洞。那知识就是力量。

JavaWorld的最新文章为开发安全Java应用程序提供了13条规则。您也可以找到大量的文章和在特定环境下,诸如安全实施的Java白皮书对Java云安全和Web应用程序安全的Java。让我们考虑几种减少您可能忽略的漏洞的方法。移至DevSecOps工作流程

减少Java代码漏洞的一种方法是转移到DevSecOps工作流。这种类型的工作流程使安全成为开发过程所有阶段的首要考虑。作为开发人员,我们经常忘记我们工作的组织的所有部门都使用(有时是改编)我们的软件。如果您的营销团队决心破坏您的努力,那么就很难使您的Web应用程序抵御入侵。在开发过程中包括所有团队,并确保安全性是项目各个方面的考虑因素。评估工作流程安全性

您还应该仔细考虑自己工作流程的安全性。您的Web应用程序本身可能是安全的,但是对于开发人员而言,漏洞增长最快的来源之一就是开发系统本身。如果您的开发系统被黑客入侵,它将成为将恶意代码注入您的软件的门户。为避免这种情况,请确保使用VPN加密所有内部通信。另外,请确保实现加密的数据存储。结论

尽管研究发现Java不如其他某些语言安全,但是开发人员应该花点时间来理解这一发现。较新的和较不常用的语言可能看起来更安全,但这可能是因为尚未发现许多漏洞,或者更糟的是,已找到但未报告。

尽管您应该了解风险并采取所有合理的预防措施来保护Java应用程序,但不要过于担心排名。作为Java开发人员,您至少知道自己要面对的挑战。

相关推荐
新闻聚焦
猜你喜欢
热门推荐
返回列表