新聞中心
關(guān)于C語言內(nèi)存管理薄弱的問題幾年前我們就討論過。有人試圖反駁,說現(xiàn)代各種操作系統(tǒng)或runtime平臺(tái)的進(jìn)步,對(duì)內(nèi)存管理的風(fēng)險(xiǎn)提供了各種保護(hù),比如地址空間隨機(jī)化,還有各種諸如Valgrind這樣的工具可以發(fā)現(xiàn)內(nèi)存訪問bug,大大削弱危險(xiǎn)程度。我十分推薦大家重新閱讀一下那次討論。

成都網(wǎng)絡(luò)公司-成都網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)十多年經(jīng)驗(yàn)成就非凡,專業(yè)從事網(wǎng)站制作、成都網(wǎng)站制作,成都網(wǎng)頁(yè)設(shè)計(jì),成都網(wǎng)頁(yè)制作,軟文推廣,廣告投放平臺(tái)等。十多年來已成功提供全面的成都網(wǎng)站建設(shè)方案,打造行業(yè)特色的成都網(wǎng)站建設(shè)案例,建站熱線:028-86922220,我們期待您的來電!
我的觀點(diǎn)——當(dāng)時(shí)和現(xiàn)在——都是C語言不適合用來寫安全性要求高的程序,任何缺乏內(nèi)存檢查機(jī)制的編程語言都不適合。很簡(jiǎn)單,就是不適合。它們應(yīng)該僅 限于用來寫一些小的核心系統(tǒng),***是小到可以用一些常規(guī)的方法(被證明的方法)進(jìn)行檢查,所有其它的,包括全部應(yīng)用邏輯,都應(yīng)該用受控代碼實(shí)現(xiàn)(例如 C#,Java或其它的,我沒有偏向)。
心臟出血就是這種缺乏邊界檢查造成的結(jié)果的另一個(gè)例子。它無法被Valgrind這樣的工具檢查出,因?yàn)樗皇瞧胀ǖ谋挥|發(fā)的動(dòng)作——它需要是一種惡意的行為或是一種足夠智能的測(cè)試協(xié)議才能發(fā)現(xiàn)(很難很難)。
事實(shí)上,沒有哪個(gè)程序員能夠聰明到可以寫出完全避免心臟出血這 樣的bug的程序。畢竟,程序員的學(xué)習(xí)和編碼關(guān)注的是他們的程序的邏輯。在沒有邊界檢查機(jī)制的編程語言里,邏輯可能會(huì)走錯(cuò)路,因?yàn)橛?jì)算機(jī)可以訪問和執(zhí)行任 意內(nèi)存內(nèi)容,這些內(nèi)容是和你的程序里的代碼和變量是沒關(guān)系的。所有沒有邊界檢查的編程語言將計(jì)算機(jī)的多個(gè)維度暴露給程序,如果你覺得自己比OpenSSL 開發(fā)團(tuán)隊(duì)強(qiáng)、能很好的處理這種情況,那是自欺欺人。
我們無法在軟件中避免bug的存在,但我們可以堵住這些看起來無窮無盡的bug的源頭。因?yàn)樗?,很早之前我們的互?lián)網(wǎng)就遭受了Morris蠕蟲病毒的危害?,F(xiàn)在,2年的時(shí)間里,世界70%的互聯(lián)網(wǎng)流量都暴露無疑,代價(jià)慘重。如果不堵住這源頭,以后會(huì)讓我們損失更多。
英文原文:The Heartbleed Bug
譯文鏈接:http://www.vaikan.com/c-vulnerabilities/
新聞名稱:驚!用C語言寫的程序不安全
路徑分享:http://www.dlmjj.cn/article/dpdgded.html


咨詢
建站咨詢
