易被忽視的五大安全編碼原則 |
發(fā)布時(shí)間: 2012/7/11 11:45:21 |
如今,很多培訓(xùn)軟件開發(fā)人員的機(jī)構(gòu)(包括很多大學(xué))并不培訓(xùn)如何安全地編碼,而只是強(qiáng)調(diào)編碼的效率和軟件功能的實(shí)現(xiàn)。其實(shí),軟件的健壯與安全在很大程度上決定了該軟件的生命力和影響力,也影響著開發(fā)人員的信譽(yù)。它取決于代碼編寫者的素質(zhì)。解決軟件安全問題的最佳策略就在于程序分析、開發(fā)、測(cè)試階段對(duì)安全性的考慮。因而,如何讓代碼更安全成為一個(gè)關(guān)鍵問題。今天筆者討論程序設(shè)計(jì)人員容易忽視的五個(gè)安全編碼原則。
一、減少攻擊面 大而全的程序往往隱藏著巨大的風(fēng)險(xiǎn)。記住,在應(yīng)用程序中每增加一個(gè)功能都會(huì)對(duì)整個(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)用戶,那么該程序遭受攻擊的可能性就會(huì)大大地降低。但是,如果對(duì)這個(gè)幫助功能進(jìn)行重新編碼,清除其搜索功能,就幾乎會(huì)消除了攻擊面。 二、不要輕信第三方 許多企業(yè)使用第三方的處理功能,而后者更有可能采用不同的安全策略。而本企業(yè)又不太可能影響任何外部的第三方,不管它是家庭用戶或是重要供應(yīng)商或合伙人。 所以,盲目信任企業(yè)外部運(yùn)行的系統(tǒng)是沒有什么道理的。應(yīng)當(dāng)以相同的方式來對(duì)待所有外部的系統(tǒng)。 例如,一家忠誠(chéng)的軟件供應(yīng)商要向貴企業(yè)提供網(wǎng)上銀行所使用的數(shù)據(jù),提供了獎(jiǎng)勵(lì)積分的數(shù)量等數(shù)據(jù)。貴企業(yè)的應(yīng)用軟件應(yīng)當(dāng)檢查這些數(shù)據(jù),確保在顯示給終端用戶時(shí)該數(shù)據(jù)的安全性,而且獎(jiǎng)勵(lì)的積分應(yīng)當(dāng)是一個(gè)正數(shù),等等。這些都是開發(fā)人員需要重視的問題。 三、不要通過隱藏來實(shí)現(xiàn)安全 通過隱藏來實(shí)現(xiàn)安全是一種很弱的安全控制。如果將隱藏作為唯一的控制方式,它遲早都會(huì)失效。這并不是說保守秘密不是一個(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è)測(cè)試計(jì)劃。在使用固有的設(shè)計(jì)模式時(shí),非常可能的是,安全問題在所有的代碼庫中都廣泛存在,所以在不引起新問題的前提下,如何開發(fā)和測(cè)試適當(dāng)?shù)男迯?fù)代碼至關(guān)重要。 比如,某用戶發(fā)現(xiàn),通過調(diào)整自己電腦的cookie就能夠看到另外一個(gè)用戶的賬戶余額。在開發(fā)人員修復(fù)過程中,補(bǔ)救代碼看起來可能相對(duì)簡(jiǎn)單,但由于這段cookie處理代碼要在所有應(yīng)用程序中共享,“一石激起千層浪”,僅對(duì)一個(gè)應(yīng)用程序的修改就會(huì)影響到所有其它的應(yīng)用程序。因而,必須對(duì)這段修復(fù)代碼所影響到的所有應(yīng)用程序進(jìn)行測(cè)試。 五、“死得光榮”—安全地發(fā)生故障 這里的意思是,由于多種原因引起應(yīng)用程序無法正常地處理業(yè)務(wù)時(shí),應(yīng)用程序發(fā)生故障的方式會(huì)影響或決定應(yīng)用程序是否安全。 例如,如果管理員在登錄或使用應(yīng)用程序的過程中,代碼失效或發(fā)生意外,此程序所帶來的安全風(fēng)險(xiǎn)可想而知。 所以開發(fā)人員必須重視在應(yīng)用程序發(fā)生故障時(shí)的安全影響。 本文出自:億恩科技【1tcdy.com】 服務(wù)器租用/服務(wù)器托管中國(guó)五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |