問(wèn):我正在學(xué)習(xí)如何獨(dú)立編程。在過(guò)去的9個(gè)月里,我自學(xué)了Microsoft Access 2007 VBA,并為我所在的公司開(kāi)發(fā)了一些功效強(qiáng)盛的數(shù)據(jù)庫(kù)利用程序,F(xiàn)在,我正籌備轉(zhuǎn)向Microsoft Visual Studio開(kāi)發(fā)環(huán)境,并對(duì)其中的C#和VB.NET深感興趣。我想請(qǐng)教一下關(guān)于盒裝軟件中通常包含多個(gè)文件的問(wèn)題。我知道許多DLL文件以及其他文件需要保存配置信息,但這些文件是如何創(chuàng)立的?這些文件是編程環(huán)境主動(dòng)創(chuàng)立的,還是在設(shè)計(jì)和編程過(guò)程中開(kāi)發(fā)人員手動(dòng)創(chuàng)立的?應(yīng)用第三方代碼創(chuàng)立利用程序是否存在安全隱患?
答:在開(kāi)發(fā)利用程序時(shí),有兩種代碼需要確保是安全的:你自己編寫(xiě)的代碼和來(lái)自第三方的代碼。安全的含義是指代碼中不包含可被用于損壞其處理的利用程序或數(shù)據(jù)的漏洞。從你提出的問(wèn)題來(lái)看,你在學(xué)習(xí)如何開(kāi)發(fā)利用程序方面已經(jīng)取得了很大的進(jìn)步。而我要強(qiáng)調(diào)的是,你是否在安全地編寫(xiě)代碼,即正確地應(yīng)用安全性功效編寫(xiě)能夠抵抗攻擊的代碼。盡管互聯(lián)網(wǎng)上說(shuō)明如何為一個(gè)利用程序添加花里胡哨的功效的示例和教程汗牛充棟,但介紹如何確保這些花里胡哨的功效不使利用程序容易受到攻擊的內(nèi)容卻鳳毛麟角。
我強(qiáng)烈建議你花時(shí)間訪問(wèn)OWASP(Open Web Application Security Project,開(kāi)放式Web利用程序安全項(xiàng)目)的網(wǎng)站。雖然OWASP重要關(guān)注基于Web的利用程序的安全性,但是其網(wǎng)站還包含了許多與任何類型的利用程序有關(guān)的安全性內(nèi)容。OWASP還供給了一個(gè)OWASP.NET項(xiàng)目,致力于為應(yīng)用Microsoft .NET Framework的軟件開(kāi)發(fā)專業(yè)人員供給一個(gè)相干信息和工具的中央材料庫(kù)。另一個(gè)值得瀏覽的內(nèi)容是微軟的《安全編碼指南》。
盡管編程涵蓋眾多主題,乍一看卷帙浩繁,但你只需要關(guān)注其中所涉及的安全性問(wèn)題,這一點(diǎn)非常重要。微軟MSDN庫(kù)中的“安全性”頁(yè)面以及其中“編寫(xiě)安全的代碼”部分,是介紹如何加強(qiáng)代碼安全性的一份優(yōu)良資源。另外,你可能感興趣的還有微軟軟件安全專家Michael Howard編寫(xiě)的多本著作,包含《編寫(xiě)安全的代碼(Writing Secure Code)》、《軟件安全的24宗罪——編程缺點(diǎn)與修復(fù)之道(24 Deadly Sins of Software Security)》和《軟件安全開(kāi)產(chǎn)生命周期(The Security Development Lifecycle)》。如果你從這些資源開(kāi)端你的學(xué)習(xí)之旅,那么你很快就可以編寫(xiě)出硬朗且能夠抵抗攻擊的利用程序。
當(dāng)然,軟件開(kāi)發(fā)人員盼望盡可能快地開(kāi)發(fā)利用程序。為了加快軟件開(kāi)發(fā)的速度,大多數(shù)開(kāi)發(fā)人員會(huì)應(yīng)用其他人編寫(xiě)的代碼,并使其適應(yīng)自己的目標(biāo)。只要能夠懂得并檢查應(yīng)用的所有第三方代碼,而不是僅僅將其粘貼到自己的利用程序中,這種做法當(dāng)然無(wú)可厚非。加快軟件開(kāi)發(fā)速度的另一條捷徑是應(yīng)用其他開(kāi)發(fā)人員編寫(xiě)的庫(kù)或模塊,例如拼寫(xiě)檢查程序或圖表制作工具。這些庫(kù)或模塊通常是以DLL文件的情勢(shì)供給,你需要將其隨著你的利用程序一起發(fā)布。毫無(wú)疑問(wèn),應(yīng)用這樣的第三方組件存在安全隱患。
那么,怎么知道一個(gè)第三方組件是否包含惡意代碼或已被攻擊者修正呢?你當(dāng)然不該從不可信的起源下載組件用于自己的利用程序。我不會(huì)應(yīng)用任何不公開(kāi)源代碼的組件,除非該組件是由著名供給商供給的。如果一個(gè)利用程序在建立時(shí)就已遭到損壞,那么它可以履行的惡意行動(dòng)將不受任何限制。正是因?yàn)槿绱,金融業(yè)中以前過(guò)度應(yīng)用可重用組件或依附第三方開(kāi)發(fā)人員開(kāi)發(fā)軟件的許多公司,現(xiàn)在開(kāi)端全面檢查所有這些組件,以查找可能存在的后門(mén)或惡意代碼。
最后,關(guān)于你的利用程序運(yùn)行時(shí)需要訪問(wèn)的眾多DLL文件,編譯器將會(huì)主動(dòng)創(chuàng)立或添加。去年,一個(gè)病毒通過(guò)沾染Delphi庫(kù)中的組件攻擊了Delphi的代碼編譯器。然后,在編譯過(guò)程中,病毒又沾染了其他程序,將已編譯的代碼變成了一個(gè)病毒傳遞系統(tǒng)。這一安全事件表明,只應(yīng)用正版授權(quán)的編譯器并確保開(kāi)發(fā)環(huán)境的安全至關(guān)重要。用于開(kāi)發(fā)你的利用程序的盤(pán)算機(jī)應(yīng)當(dāng)是一次性應(yīng)用的。同時(shí),既要保護(hù)其物理安全,又要利用防病毒軟件和防惡意軟件的程序保護(hù)其邏輯安全。祝你取得更大的進(jìn)步。
相關(guān)閱讀