亚洲全黄无码一级在线看_国产剧情久久久性色_无码av一区二区三区无码_亚洲成a×人片在线观看

當(dāng)前位置: 首頁 > 科技新聞 >

專欄

時(shí)間:2019-11-12 19:25來源:網(wǎng)絡(luò)整理 瀏覽:
張大胖最近接了一個(gè)C++的私活,在編程的時(shí)候需要生成一個(gè)字母和數(shù)字混合的隨機(jī)字符串,張大胖不知道該怎么辦,于是打開Google,輸入關(guān)鍵字搜

張大胖最近接了一個(gè)C++的私活,在編程的時(shí)候需要生成一個(gè)字母和數(shù)字混合的隨機(jī)字符串,張大胖不知道該怎么辦,于是打開Google,輸入關(guān)鍵字搜索,迅速在Stack Overflow找到了答案,還附有相關(guān)代碼,他心中竊喜,直接復(fù)制粘貼過來,稍加修改,問題搞定,爽!

專欄

這可能是很多程序員都干過的事情,但是一個(gè)研究顯示這么做是有風(fēng)險(xiǎn)的。

1

最近一個(gè)計(jì)算機(jī)科學(xué)研究小組研究了Stack Overflow上過去十年的72483個(gè)C++代碼片段,發(fā)現(xiàn)了69個(gè)有安全缺陷的代碼片段,按照CWE (Common Weakness Enumeration) 的規(guī)范,被分成29類。

從數(shù)量上來看,69個(gè)非常少,總數(shù)量的千分之一都不到,但是讓人震驚的是這69個(gè)有安全缺陷的代碼片段又出現(xiàn)在了2859個(gè)GitHub的開源項(xiàng)目中!

很明顯,這些代碼都是程序員從Stack Overflow 復(fù)制粘貼過去的。

拿文章開頭張大胖的例子來講, 他需要用C++生成一個(gè)字母數(shù)字混合的隨機(jī)字符串,但是不知道怎么辦,于是就到Stack Overflow上去搜索,他找到了一個(gè)ID為440240的答案,這個(gè)答案有265個(gè)贊同,被瀏覽了17萬多次,應(yīng)該是個(gè)好答案了吧!

專欄

于是,張大胖“動(dòng)心”了,他認(rèn)為這是一段能解決問題的好代碼,Copy , Paste 吧!

然而這段代碼是存在著大坑的。

首先是字符串長(zhǎng)度的問題,C/C++字符串以0結(jié)尾,帶有'len'參數(shù)的函數(shù)應(yīng)該把這一點(diǎn)考慮進(jìn)來,但是這段代碼只是簡(jiǎn)單的設(shè)置 s[len]=0 ,這就會(huì)導(dǎo)致不可預(yù)料的行為。

其次rand()函數(shù)已經(jīng)是一個(gè)過時(shí)的函數(shù)了,不應(yīng)該被調(diào)用了,即使是被使用,也應(yīng)該先調(diào)用srand()設(shè)置一個(gè)隨機(jī)數(shù)種子。

第三,使用rand() % N 試圖來產(chǎn)生一個(gè)隨機(jī)數(shù)字也不是最佳實(shí)踐,因?yàn)楹芏嚯S機(jī)數(shù)生成器生成數(shù)字的低字節(jié)并不是真正隨機(jī)的。

看起來很簡(jiǎn)單的代碼卻有很多安全的漏洞,如果貿(mào)然復(fù)制粘貼到自己的項(xiàng)目中,就是埋了一個(gè)地雷。

2

其實(shí),如果張大胖稍微細(xì)心一點(diǎn),他就會(huì)看到這個(gè)答案有這么幾個(gè)評(píng)論:

專欄

實(shí)際上已經(jīng)有人指出代碼的錯(cuò)誤了,Velkan還明確地說,Stack Overflow應(yīng)該提供一種機(jī)制,讓這些過時(shí)的、廢棄的答案“沉”下去,不能在這里誤導(dǎo)大家了。

但是有多少Copy&Paste程序員會(huì)細(xì)心地看這些評(píng)論呢?

這個(gè)研究小組的科學(xué)家們非常貼心,專門開發(fā)了一個(gè)Chrome插件,當(dāng)程序員去查看這些有安全缺陷的代碼時(shí),插件就會(huì)提示:這段代碼有安全漏洞! 試圖阻止復(fù)制粘貼,并且提供一個(gè)更好的解決方案的鏈接。

專欄

3

研究小組的科學(xué)家們就這些安全漏洞聯(lián)系了GitHub項(xiàng)目的開發(fā)人員, 從回復(fù)來看,只有13.3%的人說他們已經(jīng)Fix了,有40%的人承認(rèn)這些漏洞的可能性,但是他們認(rèn)為輸入數(shù)據(jù)不是動(dòng)態(tài)的,沒有安全風(fēng)險(xiǎn)。還有13.3%的人根本不愿意修改??梢姲踩珕栴}任重而道遠(yuǎn)啊!

專欄

希望能給Copy & Paste程序員敲響一次警鐘吧!

參考資料:

https://arxiv.org/pdf/1910.01321.pdf?

https://stackoverflow.com/questions/440133/how-do-i-create-a-random-alpha-numeric-string-in-c/440240#440240

http://c-faq.com/lib/randrange.html

專欄

【責(zé)任編輯:武曉燕 TEL:(010)68476606】
推薦內(nèi)容