易被忽視的五大安全編碼原則 |
發(fā)布時間: 2012/7/11 11:45:21 |
如今,很多培訓軟件開發(fā)人員的機構(包括很多大學)并不培訓如何安全地編碼,而只是強調編碼的效率和軟件功能的實現(xiàn)。其實,軟件的健壯與安全在很大程度上決定了該軟件的生命力和影響力,也影響著開發(fā)人員的信譽。它取決于代碼編寫者的素質。解決軟件安全問題的最佳策略就在于程序分析、開發(fā)、測試階段對安全性的考慮。因而,如何讓代碼更安全成為一個關鍵問題。今天筆者討論程序設計人員容易忽視的五個安全編碼原則。
一、減少攻擊面 大而全的程序往往隱藏著巨大的風險。記住,在應用程序中每增加一個功能都會對整個應用程序增加一定數(shù)量的風險。安全開發(fā)的目標是什么?是通過減少攻擊面來減少整體的風險。 例如,假設某個Web應用程序通過搜索功能來實現(xiàn)在線求助,這個搜索功能就有可能遭受SQL注入攻擊。如果這個幫助功能僅限于授權用戶,那么該程序遭受攻擊的可能性就會大大地降低。但是,如果對這個幫助功能進行重新編碼,清除其搜索功能,就幾乎會消除了攻擊面。 二、不要輕信第三方 許多企業(yè)使用第三方的處理功能,而后者更有可能采用不同的安全策略。而本企業(yè)又不太可能影響任何外部的第三方,不管它是家庭用戶或是重要供應商或合伙人。 所以,盲目信任企業(yè)外部運行的系統(tǒng)是沒有什么道理的。應當以相同的方式來對待所有外部的系統(tǒng)。 例如,一家忠誠的軟件供應商要向貴企業(yè)提供網(wǎng)上銀行所使用的數(shù)據(jù),提供了獎勵積分的數(shù)量等數(shù)據(jù)。貴企業(yè)的應用軟件應當檢查這些數(shù)據(jù),確保在顯示給終端用戶時該數(shù)據(jù)的安全性,而且獎勵的積分應當是一個正數(shù),等等。這些都是開發(fā)人員需要重視的問題。 三、不要通過隱藏來實現(xiàn)安全 通過隱藏來實現(xiàn)安全是一種很弱的安全控制。如果將隱藏作為唯一的控制方式,它遲早都會失效。這并不是說保守秘密不是一個好辦法,而只是意味著關鍵系統(tǒng)的安全性不能僅依賴于隱藏細節(jié)。 例如,應用程序的安全性不能依靠保證源代碼的秘密,使其不為人知。安全性依賴于許多因素,其中包括合理的口令策略、深度防御、商業(yè)交易限制、強健的網(wǎng)絡架構、欺詐和審計控制等。 比方說Linux,其源代碼是完全公開的,然而只要在部署階段采取了正確的安全措施,Linux就是強健、安全的操作系統(tǒng)。 四、正確糾正安全問題 如果確認了一個安全問題,非常重要的一點就是理解引起此問題的根本原因,并制定一個測試計劃。在使用固有的設計模式時,非?赡艿氖,安全問題在所有的代碼庫中都廣泛存在,所以在不引起新問題的前提下,如何開發(fā)和測試適當?shù)男迯痛a至關重要。 比如,某用戶發(fā)現(xiàn),通過調整自己電腦的cookie就能夠看到另外一個用戶的賬戶余額。在開發(fā)人員修復過程中,補救代碼看起來可能相對簡單,但由于這段cookie處理代碼要在所有應用程序中共享,“一石激起千層浪”,僅對一個應用程序的修改就會影響到所有其它的應用程序。因而,必須對這段修復代碼所影響到的所有應用程序進行測試。 五、“死得光榮”—安全地發(fā)生故障 這里的意思是,由于多種原因引起應用程序無法正常地處理業(yè)務時,應用程序發(fā)生故障的方式會影響或決定應用程序是否安全。 例如,如果管理員在登錄或使用應用程序的過程中,代碼失效或發(fā)生意外,此程序所帶來的安全風險可想而知。 所以開發(fā)人員必須重視在應用程序發(fā)生故障時的安全影響。 本文出自:億恩科技【xuefeilisp.com】 |