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

超級(jí)干貨!本地搭建代碼托管平臺(tái)Gitea

超聲波清洗的傳播原理與應(yīng)用范圍

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

SUMIF函數(shù)常見(jiàn)錯(cuò)誤及解決方案
低代碼物聯(lián)網(wǎng)云平臺(tái)是什么?有什么功能?
ModusToolbox 3.2在c代碼中包含c++代碼的正確步驟是什么?
國(guó)內(nèi)低代碼平臺(tái)推薦--萬(wàn)界星空科技低代碼平臺(tái)

一文讀懂CAN通訊錯(cuò)誤幀

components包含頭文件錯(cuò)誤是怎么回事?
介紹一個(gè)IC設(shè)計(jì)錯(cuò)誤案例:可讀debug寄存器錯(cuò)誤跨時(shí)鐘

評(píng)論