本站小編為你精心準備了軟件開發中安全代碼的應用參考范文,愿這些范文能點燃您思維的火花,激發您的寫作靈感。歡迎深入閱讀并收藏。
摘要:
計算機漏洞帶來了嚴重的影響,阻礙了用戶的正常工作,不利于營造一個安全可靠的計算機運行環境。本文結合筆者多年來的工作經驗,圍繞各種網絡安全攻擊技術,進行了針對性的分析,并引出了實施安全代碼技術的重要性和應對措施,希望對相關領域的工作有所啟發。
關鍵詞:
0引言
現階段,隨著科學技術的發展,各種開發工具層出不窮,為程序員編程工作的順利進行提供了極大的方便。需要值得注意的是,不論是為了保證程序的正常運行,還是基于對安全的考慮,編程人員都有權利和義務保證程序代碼的安全,并力求在此基礎上強大其功能。所謂安全性代碼是指那些工作于不同信任等級的同一代碼,其能在另一個信任等級處實現對其他信任級別中任一處理信息的操作,在網絡程序、CGI腳本以及計算機的Web瀏覽器中都有分布。所以,對運行調試期的程序進行安全代碼技術的處理意義重大。
1軟件開發中安全的重要性
廣義上的軟件是指按照一定順序、規則組織起來的計算機指令和數據總和,軟件一般可分為系統軟件和應用軟件兩種類型,其中前者可視為后者的運行平臺,從編程人員角度來說,一個軟件就相當于數據、程序、文檔的綜合體。在計算機和互聯網越來越普及的信息時代中,軟件已經成為人們日常生活中不可或缺的工具,幾乎每一步操作都與軟件程序有關。軟件開發過程中的安全意識、安全設計和安全實施等工作,直接決定了軟件安全性。鑒于當前軟件開發產品越來越“傻瓜”的特點,強調其應用層的功能完善,客觀上忽視了安全層面的機制完善,容易遭到黑客的覬覦。互聯網產業化雖然形成了“BAT”這樣的行業寡頭,但在安全層面依然存在很多漏洞,且現代人的生活軌跡與軟件應用息息相關,如辦公、娛樂、消費等。近年來頻頻曝光的黑客攻擊事件,本質上是尋找到軟件漏洞、缺陷之后加以攻擊,從而造成大量信息泄露,給當事人造成嚴重的損失;因此,在軟件開發中必須強調安全性。
2程序開發期的安全代碼措施
在進行代碼編寫的過程中,編程人員并不能準確找到存在的安全隱患,也不能及時的預防隱患的發生,所以在一定程度上影響了代碼編寫工作的效率。因此,對于程序人員來說,不能僅立足于當前工作的需要,應該在工作中不斷提高自我修養,不斷總結編程經驗。著名網絡專家JeffSchmidt根據這種現象,提出了安全編寫的思想,下面我們據此進行針對性的分析。
2.1只授予軟件最低的權限
軟件根據自身的功能來獲取不同級別的權限,如殺毒軟件與通信軟件相比,所開放的權限更大、更底層。程序在進行注冊表和系統文件的更改時,由于其需要通過系統級函數的權限,所以也就在一定程度上給黑客帶來了可乘之機。為此,我們可以根據不同程序的功能,將其劃分成不同的模塊,并分別授予每個模塊最低權限。授予軟件最低權限的優勢在于便于程序員檢測和維護,也可以更方便的展開審核。
2.2檢查所有的返回代碼
在進行系統或者第三方提供的外部庫函數的調用工作時,程序員必需要認真檢查所有的返回代碼,為程序的穩定運行提供切實的保證。本質上,返回代碼是軟件開發中的錯誤反饋、異常反饋機制,在軟件正常工作情況下,系統會反饋相對復雜、全面的信息內容,但在開發過程中不允許也不具備實現條件,編程人員需要通過簡單反饋信息加以判斷,并迅速了解出錯位置信息。因此,返回代碼通常是判斷代碼;引起程序出錯的原因有很多,比如,部分非標準格式化的環境變量、缺乏充足的系統資源以及用戶自行編輯配置文件或注冊表鍵而引起的誤操作等。此外,在程序運行過程中,必須將各個模塊的功能充分協調起來,使程序更好的工作于任意一個環境中。
2.3競態條件
所謂競態條件是指攻擊者會在用戶進行文件編寫、共享量的修改或者數據的更新工作時,乘機進入系統,修改程序數據,使得程序產生錯誤的輸入。比如,某一文件在該程序讀寫文件之前被控制,攻擊者會編寫一段指令代碼將寫入的程序轉移到另一個文件中,這在臨時文件中發生的概率較大。攻擊者會用自己的假文件來替代用戶的臨時文件,實現數據信息之間的轉移。為了有效防止這種情況的發生,我們從兩方面進行防治:其一,及時進行資源文件的驗證,降低事故發生的概率;其二,建立一個私有目錄用于存放部分臨時文件,并且必要時實現對系統的鎖定。
2.4進行邊界檢查、防止緩沖區溢出
當程序中存在緩沖區溢出漏洞時,攻擊者往往會將部分具有一定權限的安全代碼植入其中,此時其會通過一些手段獲得被攻擊主體的系統管理員權限。攻擊者利用該漏洞不僅可以叫停目標服務,而且還可以獲得更多的訪問權限或者對于存在緩沖區溢出漏洞的遠程服務來說,可以通過遠程操作實現對目標的控制。此外,對于檢查代碼來說,其動態和靜態緩沖區存入數據的情況需要根據所使用開發語言的類型來決定。同時,為了確保緩沖區的安全,需要從緩存的起始位置開始對每個緩沖區進行跟蹤,直到程序結束時停止該任務。
2.5保證代碼失效時自動關閉
當用戶軟件系統受到攻擊時,采取該方法可以實現對用戶計算機安全的保護。具體來講就是,如果我們發現軟件系統無法正常的工作時,應該立即停止所有對系統權限的訪問,關閉計算機,避免攻擊者進入控制系統。比如,如果攻擊者在編程人員進行防火墻系統的代碼編寫工作時,會采取強制性的拒絕服務功能,那么編程人員應在第一時間斷網自保,進而將損失降到最小,實現對計算機的保護。
3運行調試期的安全措施
軟件開發是一項長期且復雜的工作,但從生命周期理論角度分析,最復雜的工作并不是設計和實現環節,而是必須要進行調試階段的檢驗,確保軟件系統各項程序處于正常運行的條件下。該環節雖然集中了開發小組中所有工作人員的智慧,但是不可避免的依然會存在一些安全隱患問題,為此必須要制定審核程序運行性能的標準,利用其來指導各項調試工作。在這個過程中我們需要明確以下幾點:
(1)與新軟件的開發所使用的標準不同,軟件的維護過程也有一套屬于自己的運行標準,并且此要求要比開發流程嚴格的多。軟件程序調試、維護的過程不僅僅是對實用功能的檢測,同時也包括系統抗壓性、極限性等。考慮到調試、維護過程中造成系統崩潰的可能性較大,所以基于此要建立一個完善且功能強大的軟件修改控制系統。
(2)為了使整個調試工作的目標更加明確,且方便實現對其的全過程檢查,一般選擇根據實際情況建立程序的運行圖,進行針對性的數據流分析,進而將程序出口和入口處發生危險的概率降到最低,且使整個程序更加精簡。同時,為了避免給攻擊者的反跟蹤提供便利,一定要使用較為復雜的安全代碼。
(3)為了在異常環境下也能通過其檢測來發現問題,需要使用一些方法給運行程序輸入一些數據或命令,有效避免安全隱患的發生。比如,通過調試器和反匯編語言綜合作用的結果,讓代碼運行于非正常參數的環境中;避免配置文件或者其他類型的文件中出現格式錯誤;利用垃圾數據的檢驗機理來實現對網絡數據的接收等。
(4)在測試階段,十分有必要利用測試性的自我攻擊方法處理涉及網絡數據的軟件,比如,我們可以使用一個自動的漏洞掃描程序,檢測各應用軟件的Email、DNS服務器等核心系統,必要時也可以利用端口掃描的方式實現對連接到Internet的服務器的檢測,再通過撥號測試的攻擊作用,進而使得連接到本網絡中有缺陷的modem露出原形。這些方法都是切實可行的,它依托于網絡內部架構的工作機理,通過對其的模擬作用,可以將普通平臺上的漏洞暴露出來,進而找到防火墻、操作系統以及服務器程序的問題設置。
4結束語
綜上所述,要想使得計算機的安全有所保障,必須要編寫安全可靠的運行程序,相應的這也對編程人員提出了嚴格的要求,不僅要時刻具備安全編寫的意識,同時還要不斷提高自己的技能修養,熟練掌握安全代碼技術,注重經驗的積累和創新,徹底擊碎攻擊者的陰謀。
參考文獻:
[1]宋威,祁獻鵬.軟件開發中的安全代碼技術[J].網絡安全技術與應用,2002.
[2]余勇,林為民.軟件安全開發模型的研究[J].計算機安全,2005.
[3]梅宏,王千祥,張路,王戟.軟件分析技術進展[J].計算機學報,2009.
作者:李奇冰 單位:天津南開創元信息技術有限公司