有哪一种编程语言比其他的更安全吗?

段段段落
 段段段落
发布于 2019年03月26日
收藏 15

近日开源安全公司 WhiteSource 针对编程语言的安全性做了一份报告,这份报告提出了一个新问题 —— “有哪一种编程语言比其他的更安全吗?”

编程语言之争,是开发者社区一直以来的热议问题,不过讨论的过程往往伴随着双方的愤怒及和谐的破损,不了了之。许多开发者喜欢证明他们使用的编程语言占主导地位,这个过程中经常提到的就有安全性。

近日 WhiteSource 就七种热门编程语言的安全性做了年岸度报告。该报告汇总了多个来源的开源漏洞信息,如国家漏洞数据库(NVD)、安全公告、GitHub 问题追踪器(Issue Tracker)和流行开源项目问题追踪器。

WhiteSource 根据开源社区过去几年使用的一些流行语言,确认了七种比较热门的编程语言:C,Java,JavaScript,Python,Ruby,PHP 和 C ++。在这些编程语言的基础上,WhiteSource 搜索了数据库,查看了过去十年中每种语言中已知开源安全漏洞的数量、随时间推移这些安全漏洞发生的变化、以及各语言最常见的 CWE(Common Weakness Enumeration,通用缺陷列表)。

报告显示了过去10年中不同语言的开源漏洞总数,很明显居于首位的编程语言是 C 语言,占到了近一半的比例。

不过这不能说明 C 语言的安全性远低于其他热门语言。如此高的占比有几个因素可以解释:一是 C 语言的使用时间在调查语言中是最长的,二是 C 语言一般编写的代码量很大,三是 Open SSL 和 Linux 内核等基础架构背后的主要语言之一就是 C 语言。这些存在时间、体积和中心性等因素的组合,可以解释 C 语言为什么存在这么多大量已知开源安全漏洞。

报告也显示了随着时间推移不同编程语言的开源安全漏洞数量变化。过去的十年中,它们各有自己的高点和低点。但是所有语言都由一个突出的趋势,就是近两年所有语言的已知安全漏洞数量都大幅增加。这可以看作是安全漏洞意识的提高及开源的更加普及。随着开源安全研究投入资源的增加,人们发现的安全问题数量也会变多。

这些漏洞的严重程度如何呢?调查人员研究高严重性的开源安全漏洞(CVSS v2 得分高于7)时,发现除了 JavaScript 和 PHP,报告中涉及的大多数语言严重漏洞的占比处于下降趋势。

这可能是安全研究人员使用自动化工具的结果。虽然借助这些工具,过去几年大多数语言的中等漏洞数量一直在增加,但这些工具通常不能发现复杂和严重的安全问题。

调查人员还研究了每种语言常见的 CWE。这其中,跨站脚本攻击(XSS,也被称为 CWE-79)和输入验证(也被称为 CWE-20)占据了最常见的位置。另外较为突出的 CWE 有信息泄漏(CWE-200)路径遍历(CWE-22)权限及访问控制(CWE-264)不正当访问控制(CWE-284)等。

“我的编程语言比你更安全”,类似的话题可以是一种有趣的消磨时间方式。关于哪种编程语言最安全的讨论往往也会出现一些有趣的观点,而找到最终答案反而可能无法帮助你创造兼具创新性和安全性的软件。

如今,大多数软件开发都依赖多种编程语言来实现,而不是执着于某一编程语言。掌握已知的开源漏洞、了解团队正在使用的编程语言中的优点和缺点,这些都是确保软件项目从一开始就具有安全性的好方法。

最安全的编程语言没有最终赢家。WhiteSource 从研究中得出的最后一个结论是,编程语言的安全性无关于语言本身,而是取决于使用者的使用方式。开发团队使用了适当的管理方法,减轻整个 SDLC (系统生存周期)的漏洞,这才是保证项目安全的好选择。

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 OSCHINA 社区 [http://www.oschina.net]
本文标题:有哪一种编程语言比其他的更安全吗?
加载中

精彩评论

久永
久永
当然有!
——根本跑不起来的语言。
贾一饼
那不是rust吗
zqq90
zqq90
私以为,这跟门槛有关,门槛低的容易吸收更多新手,相反,「逼格」高的语言往往是一些经验较为丰富的老手
冰力
冰力

引用来自“贾一饼”的评论

那不是rust吗
@贾一饼 这个安全不只是内存方面的
Alex-wxlang
Alex-wxlang
净干没有多大意义的事,用这些来卖自己的语言!直接用万能语言 C++或者dlang就行了!如果不想操作复杂度,就用dlang,又简洁又安全!各种玩法!

最新评论(28

周扬aacc是
周扬aacc是
ruby能有c#流行?看来这是个娱乐性排行
zqq90
zqq90
私以为,这跟门槛有关,门槛低的容易吸收更多新手,相反,「逼格」高的语言往往是一些经验较为丰富的老手
冰力
冰力

引用来自“贾一饼”的评论

那不是rust吗

引用来自“冰力”的评论

@贾一饼 这个安全不只是内存方面的

引用来自“helloclia”的评论

对编程语言来说,安全性就是指的内存安全。
@helloclia 请认真看原文,说的是安全漏洞。
李达康
李达康
Asm
helloclia
helloclia

引用来自“贾一饼”的评论

那不是rust吗

引用来自“冰力”的评论

@贾一饼 这个安全不只是内存方面的
对编程语言来说,安全性就是指的内存安全。
谁来与我大战三百回合
什么语言到我手里。我都能写个格式化磁盘的。
Alex-wxlang
Alex-wxlang

引用来自“Alex-wxlang”的评论

净干没有多大意义的事,用这些来卖自己的语言!直接用万能语言 C++或者dlang就行了!如果不想操作复杂度,就用dlang,又简洁又安全!各种玩法!

引用来自“Jason909”的评论

dlang值得更火
你太有眼光了!
张亦俊
张亦俊
安全性能和编程语言有啥关系咧,各种安全组件C参与的最多,所以问题也最多,很合理
robortly
robortly
没有C# sharp,不科学!
e
eisonfine1
可以的
返回顶部
顶部