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