應(yīng)用軟件安全編程分析

時(shí)間:2022-01-19 03:40:28

導(dǎo)語(yǔ):應(yīng)用軟件安全編程分析一文來(lái)源于網(wǎng)友上傳,不代表本站觀點(diǎn),若需要原創(chuàng)文章可咨詢客服老師,歡迎參考。

應(yīng)用軟件安全編程分析

摘要:應(yīng)用軟件在編程實(shí)現(xiàn)時(shí)往往對(duì)功能和性能考慮得比較全面,但是對(duì)軟件的安全性考慮明顯不足。文章介紹了應(yīng)用軟件在編程方面存在的常見安全問(wèn)題和改進(jìn)的措施。

關(guān)鍵詞:應(yīng)用軟件;安全編程

隨著軟件工程不斷發(fā)展,開發(fā)出滿足功能和性能要求的應(yīng)用軟件正變得越來(lái)越容易。但是,在網(wǎng)絡(luò)安全形勢(shì)日趨嚴(yán)峻的今天,要開發(fā)出安全性足夠高的應(yīng)用軟件已不是一件易事。本文介紹了應(yīng)用軟件在編程方面存在的常見安全問(wèn)題和改進(jìn)措施。

1應(yīng)用軟件安全編程

應(yīng)用軟件安全編程顧名思義就是指在應(yīng)用軟件編碼時(shí)充分考慮到安全性需求或要求,從而達(dá)到提升應(yīng)用軟件安全性的目標(biāo)。為了提高軟件開發(fā)人員的安全開發(fā)能力,國(guó)內(nèi)有關(guān)機(jī)構(gòu)推出了注冊(cè)信息安全開發(fā)人員(CISD)、注冊(cè)軟件安全專業(yè)人員(CWASPCSSP)、注冊(cè)軟件安全開發(fā)人員(CWASPCSSD)等培訓(xùn)認(rèn)證。

2應(yīng)用軟件編程常見安全問(wèn)題

(1)身份鑒別方面在身份鑒別方面,通常容易忽視的一些問(wèn)題主要有:沒(méi)有對(duì)鑒別失敗的次數(shù)進(jìn)行限制;執(zhí)行重要或者不可逆操作之前沒(méi)有再次進(jìn)行身份鑒別;一次身份鑒別后進(jìn)行長(zhǎng)時(shí)間的通話,沒(méi)有周期性重新進(jìn)行身份鑒別;身份鑒別過(guò)程可能會(huì)被繞過(guò);依賴不可靠信息進(jìn)行身份鑒別;驗(yàn)證數(shù)字證書不全面;處理身份鑒別的過(guò)程中泄露多余信息。(2)口令安全方面在口令安全方面,主要存在的一些問(wèn)題主要有:雖然采用了強(qiáng)口令,但是口令的復(fù)雜度不滿足安全策略要求;對(duì)于默認(rèn)的初始口令,沒(méi)有強(qiáng)制用戶第一次登錄時(shí)更改默認(rèn)口令;對(duì)于一些關(guān)鍵核心系統(tǒng)沒(méi)有做到要求定期更改口令;在源代碼中寫入口令;在不安全環(huán)境中進(jìn)行口令傳輸。(3)日志安全方面在日志安全方面,主要存在的一些問(wèn)題主要有:未能實(shí)現(xiàn)日志文件的安全存儲(chǔ);有些重要安全事件未能記入日志;未能做到日志記錄的異常捕獲處理;對(duì)日志中的特殊元素沒(méi)有進(jìn)行過(guò)濾和驗(yàn)證。(4)數(shù)據(jù)保護(hù)方面在數(shù)據(jù)保護(hù)方面,主要存在的一些問(wèn)題有:未對(duì)敏感數(shù)據(jù)做到加密存儲(chǔ)和傳輸;未對(duì)重要數(shù)據(jù)完整性檢查;在錯(cuò)誤消息、調(diào)試信息等中含有敏感數(shù)據(jù);在客戶端保存敏感數(shù)據(jù);Web登錄表單使用瀏覽器的全自動(dòng)填充功能。(5)輸入驗(yàn)證方面在輸入驗(yàn)證方面,主要存在的一些問(wèn)題有:驗(yàn)證輸入數(shù)據(jù)的安全性時(shí)沒(méi)有全覆蓋;部分容易受到惡意攻擊的場(chǎng)景下未做好數(shù)據(jù)驗(yàn)證;對(duì)輸入數(shù)據(jù)驗(yàn)證前缺少過(guò)濾或標(biāo)準(zhǔn)化處理;關(guān)鍵業(yè)務(wù)操作的輸入數(shù)據(jù)未驗(yàn)證數(shù)據(jù)發(fā)送方的數(shù)字簽名。(6)輸出凈化方面在輸出凈化方面,主要存在的一些問(wèn)題有:未對(duì)所有字符進(jìn)行編碼;編碼規(guī)則沒(méi)有參考有關(guān)標(biāo)準(zhǔn);有些含有危險(xiǎn)字符的命令沒(méi)有進(jìn)行語(yǔ)義凈化;將URL重定向到不可信站點(diǎn)。

3應(yīng)用軟件編程常見安全問(wèn)題的改進(jìn)措施

(1)身份鑒別方面針對(duì)沒(méi)有對(duì)鑒別失敗的次數(shù)進(jìn)行限制的問(wèn)題,可以設(shè)定同一用戶進(jìn)行身份鑒別的頻率和次數(shù),設(shè)定鑒別失敗次數(shù)的閾值,當(dāng)鑒別失敗次數(shù)達(dá)到閾值時(shí)對(duì)用戶進(jìn)行鎖定,以防止暴力破解。針對(duì)執(zhí)行重要或者不可逆操作之前沒(méi)有再次進(jìn)行身份鑒別的問(wèn)題,可以梳理出重要或者不可逆操作清單,這些操作確認(rèn)之前要再次進(jìn)行身份鑒別,以減少不安全會(huì)話帶來(lái)?yè)p失。針對(duì)一次身份鑒別后進(jìn)行長(zhǎng)時(shí)間的通話,沒(méi)有周期性重新進(jìn)行身份鑒別的問(wèn)題,可以周期性進(jìn)行身份鑒別,確保權(quán)限沒(méi)有發(fā)生改變。如果發(fā)生改變,必須強(qiáng)制注銷用戶,重新進(jìn)行身份鑒別。針對(duì)身份鑒別過(guò)程可能會(huì)被繞過(guò)的問(wèn)題,嚴(yán)格控制用戶訪問(wèn)系統(tǒng)的可選通道,確保用戶只能通過(guò)指定通道訪問(wèn)系統(tǒng)。針對(duì)依賴不可靠信息進(jìn)行身份鑒別的問(wèn)題,要避免依賴不可靠信息進(jìn)行身份鑒別,比如避免信任cookie中的數(shù)據(jù)、避免依賴反向DomainNameSystem解析獲取的主機(jī)信息等等。針對(duì)驗(yàn)證數(shù)字證書不全面的問(wèn)題,應(yīng)該檢查數(shù)字證書的狀態(tài)和持有者,數(shù)字證書的狀態(tài)必須是有效的而且未過(guò)期的,數(shù)字證書的實(shí)際持有者要和證書中聲明的持有者一致。針對(duì)處理身份鑒別的過(guò)程中泄露多余信息的問(wèn)題,做到處理任何一個(gè)認(rèn)證請(qǐng)求所費(fèi)時(shí)間一致,避免攻擊者根據(jù)登錄失敗的時(shí)間來(lái)判斷登錄是否成功,安全處理失敗的認(rèn)證,確保鑒別反饋的信息中沒(méi)有敏感數(shù)據(jù)。(2)口令安全方面針對(duì)口令的復(fù)雜度不滿足安全策略要求的問(wèn)題,可以設(shè)定滿足安全策略要求的口令復(fù)雜度,對(duì)口令的組成、長(zhǎng)度等做出具體的要求。針對(duì)初始口令為默認(rèn)時(shí)沒(méi)有強(qiáng)制用戶第一次登錄時(shí)更改口令的問(wèn)題,可以采取強(qiáng)制用戶第一次登錄時(shí)更改默認(rèn)口令或者隨機(jī)生成用戶的初始密碼方式。針對(duì)一些關(guān)鍵核心系統(tǒng)沒(méi)有做到定期更改口令的問(wèn)題,可以結(jié)合安全策略要求設(shè)定口令的更改周期,強(qiáng)制定期更改口令。針對(duì)在源代碼中寫入口令的問(wèn)題,必須做到不在源代碼中出現(xiàn)口令,將加密后的口令存儲(chǔ)在相關(guān)配置文件、Database或者其他外部數(shù)據(jù)源中。針對(duì)在不安全環(huán)境中進(jìn)行口令傳輸?shù)膯?wèn)題,首先要做到不允許明文傳遞口令,其次對(duì)于諸如Http、Ftp、POP等傳統(tǒng)協(xié)議,必須要在使用安全傳輸協(xié)議的情況下才能傳輸口令。(3)日志安全方面針對(duì)未能實(shí)現(xiàn)日志文件的安全存儲(chǔ)的問(wèn)題,可以將日志文件單獨(dú)存儲(chǔ)于應(yīng)用程序目錄外,采取嚴(yán)格的訪問(wèn)控制措施確保日志文件的安全;針對(duì)有些重要安全事件未能記入日志的問(wèn)題,做到系統(tǒng)發(fā)生重要安全事件創(chuàng)建日志,特別是一些失敗的認(rèn)證嘗試、失敗的訪問(wèn)控制、已過(guò)期的會(huì)話令牌嘗試等。針對(duì)未能做到日志記錄的異常捕獲處理的問(wèn)題,做到對(duì)日志記錄進(jìn)行完善的異常捕獲處理,實(shí)現(xiàn)哪怕日志記錄過(guò)程出現(xiàn)異常,日志記錄仍然可以繼續(xù)正確地執(zhí)行。針對(duì)日志中的特殊元素沒(méi)有進(jìn)行過(guò)濾和驗(yàn)證的問(wèn)題,做到對(duì)日志中的特殊元素進(jìn)行過(guò)濾和驗(yàn)證,實(shí)現(xiàn)日志中的不可信數(shù)據(jù)不會(huì)在界面查看時(shí)或者運(yùn)行軟件時(shí)以代碼的形式被執(zhí)行。(4)數(shù)據(jù)保護(hù)方面針對(duì)未對(duì)敏感數(shù)據(jù)做到加密存儲(chǔ)和傳輸?shù)膯?wèn)題,做到明確應(yīng)用軟件中敏感數(shù)據(jù)的范圍,對(duì)敏感數(shù)據(jù)加密存儲(chǔ)和傳輸;針對(duì)未對(duì)重要數(shù)據(jù)完整性檢查的問(wèn)題,做到對(duì)重要數(shù)據(jù)開展完整性檢查;針對(duì)在錯(cuò)誤消息、調(diào)試信息等中含有敏感數(shù)據(jù)的問(wèn)題,做到避免在錯(cuò)誤消息、調(diào)試信息中含有敏感數(shù)據(jù);針對(duì)在客戶端保存敏感數(shù)據(jù)的問(wèn)題,做到不允許在客戶端保存敏感數(shù)據(jù);針對(duì)Web登錄表單使用瀏覽器的口令自動(dòng)填充的問(wèn)題,禁止瀏覽器的口令自動(dòng)填充功能。(5)輸入驗(yàn)證方面針對(duì)驗(yàn)證輸入數(shù)據(jù)的安全性時(shí)沒(méi)有全覆蓋的問(wèn)題,做到對(duì)所有輸入數(shù)據(jù)進(jìn)行安全驗(yàn)證,檢測(cè)輸入數(shù)據(jù)的數(shù)據(jù)類型、長(zhǎng)度(最大和最小長(zhǎng)度)、值(最大值和最小值);針對(duì)部分容易受到惡意攻擊的場(chǎng)景下未做好數(shù)據(jù)驗(yàn)證的問(wèn)題,重點(diǎn)關(guān)注Http請(qǐng)求,防止惡意數(shù)據(jù)通過(guò)表單域、Coookie、URL參數(shù)以及URL自身傳入;重點(diǎn)關(guān)注來(lái)自重定向輸入的數(shù)據(jù),防止惡意攻擊者避開有關(guān)驗(yàn)證向重定向目標(biāo)直接提交惡意代碼;針對(duì)輸入數(shù)據(jù)驗(yàn)證前缺少過(guò)濾或標(biāo)準(zhǔn)化處理的問(wèn)題,做到在對(duì)輸入數(shù)據(jù)進(jìn)行驗(yàn)證前先進(jìn)行過(guò)濾或標(biāo)準(zhǔn)化處理;針對(duì)關(guān)鍵業(yè)務(wù)操作的輸入數(shù)據(jù)未驗(yàn)證數(shù)據(jù)發(fā)送方的數(shù)字簽名的問(wèn)題,做到對(duì)關(guān)鍵業(yè)務(wù)操作的輸入數(shù)據(jù),驗(yàn)證數(shù)據(jù)的真實(shí)性和完整性,通過(guò)數(shù)據(jù)發(fā)送方的數(shù)字簽名確認(rèn)其身份。(6)輸出凈化方面針對(duì)未對(duì)所有字符進(jìn)行編碼的問(wèn)題,做到除目標(biāo)編譯器安全外,對(duì)所有字符進(jìn)行編碼;針對(duì)編碼規(guī)則沒(méi)有參考有關(guān)標(biāo)準(zhǔn)的問(wèn)題,做到在制定編碼規(guī)則時(shí)參考國(guó)際國(guó)內(nèi)行業(yè)標(biāo)準(zhǔn),結(jié)合實(shí)際情況;針對(duì)有些含有危險(xiǎn)字符的命令沒(méi)有進(jìn)行語(yǔ)義凈化的問(wèn)題,重點(diǎn)關(guān)注SQL、XML、LDAP查詢語(yǔ)句、操作系統(tǒng)命令,對(duì)其進(jìn)行語(yǔ)義凈化;針對(duì)將URL重定向到不可信站點(diǎn)的問(wèn)題,做到不允許將URL重定向到用戶可控的不可信站點(diǎn)。

4結(jié)語(yǔ)

應(yīng)用軟件的安全性沒(méi)有最好,只有更好。應(yīng)用軟件的安全性只有起點(diǎn),沒(méi)有終點(diǎn)。只要我們?cè)诎ň幊虒?shí)現(xiàn)在內(nèi)的軟件全生命周期內(nèi)都充分考慮并且高度重視安全性需求或要求,應(yīng)用軟件的安全性就會(huì)不斷得到提升。

參考文獻(xiàn):

[1]王磊,張玉清,王力.安全編程研究[J].計(jì)算機(jī)應(yīng)用研究,2004(09):130-133.

[2]陳金茹.計(jì)算機(jī)軟件安全問(wèn)題的防范措施:[J].電子技術(shù)與軟件工程,2019(19):196-197.

[3]朱泓鑫.計(jì)算機(jī)軟件安全與防護(hù)[J].電子技術(shù)與軟件工程,2019(09):212.

[4]梁利亭.計(jì)算機(jī)軟件安全及防護(hù)對(duì)策[J].信息技術(shù)與信息化,2020(01):215-217.

作者:甘清云 單位:中國(guó)直升機(jī)設(shè)計(jì)研究所