有史以來複製最多的StackOverflow 代碼段存在缺陷
對於開發者而言,Stack Overflow 和GitHub 是最為熟悉不過的兩大平台,這些平台充斥著大量開源項目信息和解決各類問題的代碼片段。而就在近日,Palantir的Java 開發人員,也是StackQflow(與編程相關的問題的問答網站)中排名最高的參與者之一Andreas Lundblad 卻承認,一段自己十年前寫的代碼,也是Stack Overflow 上複製次數最多、傳播範圍最廣的代碼段均包含一個錯誤。
據悉,2018年發表的一篇學術論文[ PDF ]確定了在網站上發布的代碼片段Lundblad是從StackOverflow提取的複制最多的Java代碼,然後在開源項目中重複使用。
該代碼段以人類可讀格式(例如123.5 MB)打印了字節數(123,456,789 字節)。學者發現,此代碼已被複製並嵌入到6,000 多個GitHub Java 項目中,比其他任何StackOverflow Java 代碼段都多。
而在上週發布的博客文章中,Lundblad則承認,該代碼存在缺陷,並且錯誤地將字節數轉換為人類可讀的格式。他表示,在學習了學術論文及其結果之後,已重新審視了代碼。同時再次查看了該代碼,並在其博客上發布了更正的版本。
STACKOVERFLOW 代碼有時包含安全性錯誤
據了解,儘管Lundblad 的代碼段是存在一個瑣碎的轉換錯誤,僅導致文件大小估計稍有不准確,但情況或許可能會更糟。例如,該代碼可能包含安全漏洞。如果這樣做的話,那麼修復所有易受攻擊的應用程序將花費數月甚至數年,使用戶容易受到攻擊。
事實上,即使普遍認為從StackOverflow 複製粘貼代碼是一個壞主意,但開發人員還是一直這樣做。
2018 年的研究論文顯示了這種做法在Java 生態系統中的普及程度,並揭示了複製流行的StackOverflow 答案的絕大多數開發人員甚至都沒有理會其來源。
從StackOverflow 複製代碼但沒有署名的軟件開發人員,實際上對其他編碼人員隱藏了他們已經在項目內部引入未經審查的代碼的情況。
這聽起來像是一個過於警惕的聲明,但在2019年10月發表的另一項學術研究項目[ PDF ]顯示,StackOverflow代碼段確實包含漏洞。該研究論文在過去十年中在StackOverflow上發布的69種最流行的C ++代碼片段中發現了主要的安全漏洞。
研究人員透露,他們在總共2859 個GitHub 項目中發現了這69 個易受攻擊的代碼片段,顯示了一個錯誤的StackOverflow 答案如何對整個開源應用生態系統造成破壞。
參考消息:
https://programming.guide/worlds-most-copied-so-snippet.html
https://www.zdnet.com/article/the-most-copied-stackoverflow-java-code-snippet-contains-a-bug/