
一直以来,复制最多的StackOverflow Java代码段均包含一个BUG。
这是来自代码的作者,Palantir的Java开发人员Andreas Lundblad,以及StackQflow(与编程相关的主题的问答网站)中排名最高的撰稿人之一的亲口承认。
在2018年发表的一篇学术论文[ PDF ]中,确定了Lundblad在网站上发布的代码片段是历史上从StackOverflow被提取复制最多的Java代码,它在开源项目中重复使用。
据之前统计,此代码已被复制并嵌入到6,000多个GitHub Java项目中,比其他任何StackOverflow Java代码段都多。
这段代码段是Lundblad对2010年9月发布的StackOverflow上某个问题的答案。该代码段以人类可读格式(例如123.5 MB)打印了字节数(123,456,789字节)。

在上周发布的博客文章中,Lundblad承认该代码存在漏洞缺陷,并且错误地将字节数转换为人类可读的格式。
Lundblad说,在学习了学术论文及其结果之后,他重新审视了代码,并在其博客上发布了更正的版本。
STACKOVERFLOW代码有时包含安全性错误
尽管Lundblad的代码段表面上只是包含一个细微的转换错误,仅导致文件大小估计稍有不准确,但实际情况可能会更糟,这种安全性上的错误可能会带来更严重的后果。
例如,该代码可能包含安全漏洞。如果这样做的话,那么修复所有易受攻击的应用程序将花费数月甚至数年,在此期间,所有的用户的都会容易受到攻击。
即使普遍认为直接从StackOverflow复制粘贴代码是一个不怎么好的主意,但绝大多数的开发人员仍然会这么做。
2018年的研究论文显示了这种做法在Java生态系统中的普及程度,并揭示了复制流行的StackOverflow中代码的绝大多数开发人员甚至都不会对其来源进行查询。
这表明从StackOverflow复制代码而不经查证的软件开发人员实际上对其他编码人员隐藏了他们已经在项目内部引入未经审查的代码的情况,这一点是很不安全的,相信也是违规的。
这听起来像是一个过于警惕的声明,但是在2019年10月发表的另一项学术研究项目[ PDF ]显示很多的StackOverflow代码片段确实包含漏洞-这不仅仅是开发人员用来互相吓urban的城市神话。
该研究论文在过去十年中在StackOverflow上发布的69种最流行的C ++代码片段中发现了主要的安全漏洞。
研究人员说,他们在总共2859个GitHub项目中发现了这69个易受攻击的代码片段,这充分说明了一个错误的StackOverflow答案代码,是如何对整个开源应用生态系统造成安全性的影响及破坏。
-参考来源:ZDNet