軟件開發(fā)
軟件安全代碼技術
軟件開發(fā)中的安全代碼技術
現階段,隨著科學技術的發(fā)展,各種開發(fā)工具層出不窮,為程序員編程工作的順利進行提供了極大的方便。需要值得注意的是,不論是為了保證程序的正常運行,還是基于對安全的考慮,編程人員都有權利和義務保證程序代碼的安全,并力求在此基礎上強大其功能。所謂安全性代碼是指那些工作于不同信任等級的同一代碼,其能在另一個信任等級處實現對其他信任級別中任一處理信息的操作,在網絡程序、CGI腳本以及計算機的Web瀏覽器中都有分布。所以,對運行調試期的程序進行安全代碼技術的處理意義重大。
一、軟件開發(fā)中安全的重要性
廣義上的軟件是指按照一定順序、規(guī)則組織起來的計算機指令和數據總和,軟件一般可分為系統(tǒng)軟件和應用軟件兩種類型,其中前者可視為后者的運行平臺,從編程人員角度來說,一個軟件就相當于數據、程序、文檔的綜合體。在計算機和互聯(lián)網越來越普及的信息時代中,軟件已經成為人們日常生活中不可或缺的工具,幾乎每一步操作都與軟件程序有關。
軟件開發(fā)過程中的安全意識、安全設計和安全實施等工作,直接決定了軟件安全性。鑒于當前軟件開發(fā)產品越來越“傻瓜”的特點,強調其應用層的功能完善,客觀上忽視了安全層面的機制完善,容易遭到黑客的覬覦?;ヂ?lián)網產業(yè)化雖然形成了“BAT”這樣的行業(yè)寡頭,但在安全層面依然存在很多漏洞,且現代人的生活軌跡與軟件應用息息相關,如辦公、娛樂、消費等。近年來頻頻曝光的黑客攻擊事件,本質上是尋找到軟件漏洞、缺陷之后加以攻擊,從而造成大量信息泄露,給當事人造成嚴重的損失;因此,在軟件開發(fā)中必須強調安全性。
二、程序開發(fā)期的安全代碼措施
在進行代碼編寫的過程中,編程人員并不能準確找到存在的安全隱患,也不能及時的預防隱患的發(fā)生,所以在一定程度上影響了代碼編寫工作的效率。因此,對于程序人員來說,不能僅立足于當前工作的需要,應該在工作中不斷提高自我修養(yǎng),不斷總結編程經驗。著名網絡專家Jeff Schmidt根據這種現象,提出了安全編寫的思想,下面我們據此進行針對性的分析。
2.1只授予軟件最低的權限
軟件根據自身的功能來獲取不同級別的權限,如殺毒軟件與通信軟件相比,所開放的權限更大、更底層。程序在進行注冊表和系統(tǒng)文件的更改時,由于其需要通過系統(tǒng)級函數的權限,所以也就在一定程度上給黑客帶來了可乘之機。為此,我們可以根據不同程序的功能,將其劃分成不同的模塊,并分別授予每個模塊最低權限。授予軟件最低權限的優(yōu)勢在于便于程序員檢測和維護,也可以更方便的展開審核。
2.2檢查所有的返回代碼
在進行系統(tǒng)或者第三方提供的外部庫函數的調用工作時,程序員必需要認真檢查所有的返回代碼,為程序的穩(wěn)定運行提供切實的保證。本質上,返回代碼是軟件開發(fā)中的錯誤反饋、異常反饋機制,在軟件正常工作情況下,系統(tǒng)會反饋相對復雜、全面的信息內容,但在開發(fā)過程中不允許也不具備實現條件,編程人員需要通過簡單反饋信息加以判斷,并迅速了解出錯位置信息。因此,返回代碼通常是判斷代碼;引起程序出錯的原因有很多,比如,部分非標準格式化的環(huán)境變量、缺乏充足的系統(tǒng)資源以及用戶自行編輯配置文件或注冊表鍵而引起的誤操作等。此外,在程序運行過程中,必須將各個模塊的功能充分協(xié)調起來,使程序更好的工作于任意一個環(huán)境中。
2.3競態(tài)條件
所謂競態(tài)條件是指攻擊者會在用戶進行文件編寫、共享量的修改或者數據的更新工作時,乘機進入系統(tǒng),修改程序數據,使得程序產生錯誤的輸入。比如,某一文件在該程序讀寫文件之前被控制,攻擊者會編寫一段指令代碼將寫入的程序轉移到另一個文件中,這在臨時文件中發(fā)生的概率較大。攻擊者會用自己的假文件來替代用戶的臨時文件,實現數據信息之間的轉移。為了有效防止這種情況的發(fā)生,我們從兩方面進行防治:其一,及時進行資源文件的驗證,降低事故發(fā)生的概率;其二,建立一個私有目錄用于存放部分臨時文件,并且必要時實現對系統(tǒng)的鎖定。
2.4進行邊界檢查、防止緩沖區(qū)溢出
當程序中存在緩沖區(qū)溢出漏洞時,攻擊者往往會將部分具有一定權限的安全代碼植入其中,此時其會通過一些手段獲得被攻擊主體的系統(tǒng)管理員權限。攻擊者利用該漏洞不僅可以叫停目標服務,而且還可以獲得更多的訪問權限或者對于存在緩沖區(qū)溢出漏洞的遠程服務來說,可以通過遠程操作實現對目標的控制。此外,對于檢查代碼來說,其動態(tài)和靜態(tài)緩沖區(qū)存入數據的情況需要根據所使用開發(fā)語言的類型來決定。同時,為了確保緩沖區(qū)的安全,需要從緩存的起始位置開始對每個緩沖區(qū)進行跟蹤,直到程序結束時停止該任務。
2.5保證代碼失效時自動關閉
當用戶軟件系統(tǒng)受到攻擊時,采取該方法可以實現對用戶計算機安全的保護。具體來講就是,如果我們發(fā)現軟件系統(tǒng)無法正常的工作時,應該立即停止所有對系統(tǒng)權限的訪問,關閉計算機,避免攻擊者進入控制系統(tǒng)。比如,如果攻擊者在編程人員進行防火墻系統(tǒng)的代碼編寫工作時,會采取強制性的拒絕服務功能,那么編程人員應在第一時間斷網自保,進而將損失降到最小,實現對計算機的保護。
三、運行調試期的安全措施
軟件開發(fā)是一項長期且復雜的工作,但從生命周期理論角度分析,最復雜的工作并不是設計和實現環(huán)節(jié),而是必須要進行調試階段的檢驗,確保軟件系統(tǒng)各項程序處于正常運行的條件下。該環(huán)節(jié)雖然集中了開發(fā)小組中所有工作人員的智慧,但是不可避免的依然會存在一些安全隱患問題,為此必須要制定審核程序運行性能的標準,利用其來指導各項調試工作。在這個過程中我們需要明確以下幾點:
(1)與新軟件的開發(fā)所使用的標準不同,軟件的維護過程也有一套屬于自己的運行標準,并且此要求要比開發(fā)流程嚴格的多。軟件程序調試、維護的過程不僅僅是對實用功能的檢測,同時也包括系統(tǒng)抗壓性、極限性等??紤]到調試、維護過程中造成系統(tǒng)崩潰的可能性較大,所以基于此要建立一個完善且功能強大的軟件修改控制系統(tǒng)。
(2)為了使整個調試工作的目標更加明確,且方便實現對其的全過程檢查,一般選擇根據實際情況建立程序的運行圖,進行針對性的數據流分析,進而將程序出口和入口處發(fā)生危險的概率降到最低,且使整個程序更加精簡。同時,為了避免給攻擊者的反跟蹤提供便利,一定要使用較為復雜的安全代碼。
(3)為了在異常環(huán)境下也能通過其檢測來發(fā)現問題,需要使用一些方法給運行程序輸入一些數據或命令,有效避免安全隱患的發(fā)生。比如,通過調試器和反匯編語言綜合作用的結果,讓代碼運行于非正常參數的環(huán)境中;避免配置文件或者其他類型的文件中出現格式錯誤;利用垃圾數據的檢驗機理來實現對網絡數據的接收等。
(4)在測試階段,十分有必要利用測試性的自我攻擊方法處理涉及網絡數據的軟件,比如,我們可以使用一個自動的漏洞掃描程序,檢測各應用軟件的Email、DNS服務器等核心系統(tǒng),必要時也可以利用端口掃描的方式實現對連接到Internet的服務器的檢測,再通過撥號測試的攻擊作用,進而使得連接到本網絡中有缺陷的modem露出原形。這些方法都是切實可行的,它依托于網絡內部架構的工作機理,通過對其的模擬作用,可以將普通平臺上的漏洞暴露出來,進而找到防火墻、操作系統(tǒng)以及服務器程序的問題設置。
總結
綜上所述,要想使得計算機的安全有所保障,必須要編寫安全可靠的運行程序,相應的這也對編程人員提出了嚴格的要求,不僅要時刻具備安全編寫的意識,同時還要不斷提高自己的技能修養(yǎng),熟練掌握安全代碼技術,注重經驗的積累和創(chuàng)新,徹底擊碎攻擊者的陰謀。
以上就是我們深圳市組創(chuàng)微電子有限公司為您介紹的軟件開發(fā)中的安全代碼技術詳情。如果您有智能電子產品的軟硬件功能開發(fā)需求,可以放心交給我們,我們有豐富的電子產品定制開發(fā)經驗,可以盡快評估開發(fā)周期與IC價格,也可以核算PCBA報價。我們是多家國內外芯片代理商:松翰、應廣、杰理、安凱、全志、realtek,有MCU、語音IC、藍牙IC與模塊、wifi模塊。我們的擁有硬件設計與軟件開發(fā)能力。涵蓋了電路設計、PCB設計、單片機開發(fā)、軟件定制開發(fā)、APP定制開發(fā)、微信公眾號開發(fā)、語音識別技術、藍牙wifi開發(fā)等。還可以承接智能電子產品研發(fā)、家用電器方案設計、美容儀器開發(fā)、物聯(lián)網應用開發(fā)、智能家居方案設計、TWS耳機開發(fā)、藍牙耳機音箱開發(fā)、兒童玩具方案開發(fā)、電子教育產品研發(fā)。
- 返回頂部