談?wù)勡浖_發(fā)人員必懂的五個(gè)開發(fā)原則
2015-03-03 16:10:28 訪問:
很多培養(yǎng)軟件開發(fā)人員的機(jī)構(gòu)(包括大學(xué))并不培訓(xùn)如何安全地軟件開發(fā),而只是強(qiáng)調(diào)軟件開發(fā)的效率和軟件功能的實(shí)現(xiàn)。其實(shí),軟件的穩(wěn)定性與安全在很大程度上決定了該軟件的生命力和影響力,也影響著軟件開發(fā)人員的信譽(yù)。它取決于代碼編寫者的素質(zhì)。解決軟件安全問題的最佳策略就在于程序分析、軟件開發(fā)、測試階段對安全性的考慮。因而,如何讓代碼更安全成為一個(gè)關(guān)鍵問題。今天筆者討論程序設(shè)計(jì)人員容易忽視的五個(gè)安全軟件開發(fā)原則。
一、減少攻擊面
大而全的程序往往隱藏著巨大的風(fēng)險(xiǎn)。記住,在應(yīng)用程序中每增加一個(gè)功能都會對整個(gè)應(yīng)用程序增加一定數(shù)量的風(fēng)險(xiǎn)。安全軟件開發(fā)的目標(biāo)是什么?是通過減少攻擊面來減少整體的風(fēng)險(xiǎn)。
例如,假設(shè)某個(gè)Web應(yīng)用程序通過搜索功能來實(shí)現(xiàn)在線求助,這個(gè)搜索功能就有可能遭受SQL注入攻擊。如果這個(gè)幫助功能僅限于授權(quán)用戶,那么該程序遭受攻擊的可能性就會大大地降低。但是,如果對這個(gè)幫助功能進(jìn)行重新軟件開發(fā),清除其搜索功能,就幾乎會消除了攻擊面。
二、不要輕信第三方
許多軟件公司使用第三方的處理功能,而后者更有可能采用不同的安全策略。而本軟件公司又不太可能影響任何外部的第三方,不管它是家庭用戶或是重要供應(yīng)商或合伙人。
所以,盲目信任軟件公司外部運(yùn)行的系統(tǒng)是沒有什么道理的。應(yīng)當(dāng)以相同的方式來對待所有外部的系統(tǒng)。
例如,一家忠誠的軟件供應(yīng)商要向貴軟件公司提供網(wǎng)上銀行所使用的數(shù)據(jù),提供了獎勵積分的數(shù)量等數(shù)據(jù)。貴軟件公司的應(yīng)用軟件應(yīng)當(dāng)檢查這些數(shù)據(jù),確保在顯示給終端用戶時(shí)該數(shù)據(jù)的安全性,而且獎勵的積分應(yīng)當(dāng)是一個(gè)正數(shù),等等。這些都是軟件開發(fā)人員需要重視的問題。
三、不要通過隱藏來實(shí)現(xiàn)安全
通過隱藏來實(shí)現(xiàn)安全是一種很弱的安全控制。如果將隱藏作為唯一的控制方式,它遲早都會失效。這并不是說保守秘密不是一個(gè)好辦法,而只是意味著關(guān)鍵系統(tǒng)的安全性不能僅依賴于隱藏細(xì)節(jié)。
例如,應(yīng)用程序的安全性不能依靠保證源代碼的秘密,使其不為人知。安全性依賴于許多因素,其中包括合理的口令策略、深度防御、商業(yè)交易限制、強(qiáng)健的網(wǎng)絡(luò)架構(gòu)、欺詐和審計(jì)控制等。
比方說Linux,其源代碼是完全公開的,然而只要在部署階段采取了正確的安全措施,Linux就是強(qiáng)健、安全的操作系統(tǒng)。
四、正確糾正安全問題
如果確認(rèn)了一個(gè)安全問題,非常重要的一點(diǎn)就是理解引起此問題的根本原因,并制定一個(gè)測試計(jì)劃。在使用固有的設(shè)計(jì)模式時(shí),非??赡艿氖牵踩珕栴}在所有的代碼庫中都廣泛存在,所以在不引起新問題的前提下,如何軟件開發(fā)和測試適當(dāng)?shù)男迯?fù)代碼至關(guān)重要。
比如,某用戶發(fā)現(xiàn),通過調(diào)整自己電腦的cookie就能夠看到另外一個(gè)用戶的賬戶余額。在軟件開發(fā)人員修復(fù)過程中,補(bǔ)救代碼看起來可能相對簡單,但由于這段cookie處理代碼要在所有應(yīng)用程序中共享,“一石激起千層浪”,僅對一個(gè)應(yīng)用程序的修改就會影響到所有其它的應(yīng)用程序。因而,必須對這段修復(fù)代碼所影響到的所有應(yīng)用程序進(jìn)行測試。
五、“死得光榮”—安全地發(fā)生故障
這里的意思是,由于多種原因引起應(yīng)用程序無法正常地處理業(yè)務(wù)時(shí),應(yīng)用程序發(fā)生故障的方式會影響或決定應(yīng)用程序是否安全。
例如,如果管理員在登錄或使用應(yīng)用程序的過程中,代碼失效或發(fā)生意外,此程序所帶來的安全風(fēng)險(xiǎn)可想而知。
所以軟件開發(fā)人員必須重視在應(yīng)用程序發(fā)生故障時(shí)的安全影響。
選購指南:
本公司主要為山東地區(qū)供應(yīng)各品種型的開發(fā),濟(jì)南桌面軟件開發(fā),濟(jì)南網(wǎng)頁軟件開發(fā),濟(jì)南APP軟件開發(fā),濟(jì)南WinCE嵌入式軟件開發(fā),具體包含如:家電公司管理軟件、電腦公司管理系統(tǒng)、軟件公司管理系統(tǒng)、手機(jī)店管理系統(tǒng)、森普P6綜合業(yè)務(wù)支撐平臺、政府辦公平臺、濟(jì)南財(cái)務(wù)濟(jì)南軟件開發(fā)、濟(jì)南HR濟(jì)南軟件開發(fā),可以滿足各種大中小型各類企業(yè)的管理需要。