對于開發(fā)者而言,Stack Overflow和GitHub是最為熟悉不過的兩大平臺,這些平臺充斥著大量開源項目信息和解決各類問題的代碼片段。而就在近日,Palantir的Java開發(fā)人員,也是StackQflow(與編程相關的問題的問答網(wǎng)站)中排名最高的參與者之一Andreas Lundblad卻承認,一段自己十年前寫的代碼,也是Stack Overflow上復制次數(shù)最多、傳播范圍最廣的代碼段均包含一個錯誤。
據(jù)悉,2018年發(fā)表的一篇學術論文[PDF]確定了在網(wǎng)站上發(fā)布的代碼片段Lundblad是從StackOverflow提取的復制最多的Java代碼,然后在開源項目中重復使用。
該代碼段以人類可讀格式(例如123.5 MB)打印了字節(jié)數(shù)(123,456,789字節(jié))。學者發(fā)現(xiàn),此代碼已被復制并嵌入到6,000多個GitHub Java項目中,比其他任何StackOverflow Java代碼段都多。
而在上周發(fā)布的博客文章中,Lundblad則承認,該代碼存在缺陷,并且錯誤地將字節(jié)數(shù)轉(zhuǎn)換為人類可讀的格式。他表示,在學習了學術論文及其結(jié)果之后,已重新審視了代碼。同時再次查看了該代碼,并在其博客上發(fā)布了更正的版本。
STACKOVERFLOW代碼有時包含安全性錯誤
據(jù)了解,盡管Lundblad的代碼段是存在一個瑣碎的轉(zhuǎn)換錯誤,僅導致文件大小估計稍有不準確,但情況或許可能會更糟。例如,該代碼可能包含安全漏洞。如果這樣做的話,那么修復所有易受攻擊的應用程序?qū)⒒ㄙM數(shù)月甚至數(shù)年,使用戶容易受到攻擊。
事實上,即使普遍認為從StackOverflow復制粘貼代碼是一個壞主意,但開發(fā)人員還是一直這樣做。
2018年的研究論文顯示了這種做法在Java生態(tài)系統(tǒng)中的普及程度,并揭示了復制流行的StackOverflow答案的絕大多數(shù)開發(fā)人員甚至都沒有理會其來源。
從StackOverflow復制代碼但沒有署名的軟件開發(fā)人員,實際上對其他編碼人員隱藏了他們已經(jīng)在項目內(nèi)部引入未經(jīng)審查的代碼的情況。
這聽起來像是一個過于警惕的聲明,但在2019年10月發(fā)表的另一項學術研究項目[PDF]顯示,StackOverflow代碼段確實包含漏洞。該研究論文在過去十年中在StackOverflow上發(fā)布的69種最流行的C ++代碼片段中發(fā)現(xiàn)了主要的安全漏洞。
研究人員透露,他們在總共2859個GitHub項目中發(fā)現(xiàn)了這69個易受攻擊的代碼片段,顯示了一個錯誤的StackOverflow答案如何對整個開源應用生態(tài)系統(tǒng)造成破壞。
-
JAVA
+關注
關注
20文章
2989瀏覽量
109900 -
開源
+關注
關注
3文章
3690瀏覽量
43840
發(fā)布評論請先 登錄
CAN總線傳播延遲過大導致通信異常現(xiàn)象解析

什么是零代碼平臺?
如何獲取XferData的錯誤代碼?
DLP4500的綠色LED波長是一段范圍還是某一個單獨值?
15行代碼引發(fā)1800多行編譯錯誤:問題排查挑戰(zhàn)
Devart::dbForge SQL Complete讓生產(chǎn)力上一個臺階

超聲波清洗的傳播原理與應用范圍

devops使用最廣泛的集成工具盤點
SQL錯誤代碼及解決方案
【每天學點AI】前向傳播、損失函數(shù)、反向傳播

評論