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