你造嗎?開發人都知道這四個安全常識
譯文【51CTO.com快譯】對安全性的考量應該從軟件的開發伊始就受到足夠的重視,這已然成為預防攻擊活動并保護全球用戶的重要前提。下面,我們一起來了解每位開發者皆應了解的基本安全常識。
對輸入內容保持懷疑
作為起點,軟件保護工作應該對一切接收到的信息與數據進行檢查。事實上,預防惡意輸入內容接觸您的軟件并實施執行,將有效提升攻擊或者安全違規行為獲得成功的難度。
然而,開發者往往更傾向于對輸入內容進行錯誤檢查。這顯然是種誤區,因為攻擊者可以輕松繞過這些非正確值,并且進入變更正確值的模式,以至于我們無法檢查到其篡改的內容。而作為開發者,我們應根據模式對輸入內容進行檢查,且拒絕一切與正常使用模式不符的輸入信息。
減少攻擊面
所謂攻擊面,是指所有攻擊點與攻擊量的總和,黑客或者未授權用戶可能突破安全保護,接觸數據并竊取敏感信息。所謂攻擊微量是指惡意代碼的執行方法,例如病毒或者蠕蟲,其能夠感染目標計算機并進一步傳播至更多設備當中。
黑客只需要找出一個薄弱點即可成功入侵。正因為如此,現代企業需要盡量減少攻擊面,同時利用可視化系統繪制所有路徑、網絡與設備,從而及時發現弱點并消除相關威脅。
但同樣重要的是,減少攻擊面并不能降低黑客成功入侵之后所造成的危害與后果。事實上,減少攻擊面的作用在于降低發生安全問題的幾率。具體來講,我們可以通過減少代碼運行量、減少未授權用戶可用代碼以及減少可利用入口點等方式實現攻擊面控制。
以安全方式應對失敗
每套系統都可能遭遇入侵,這種失敗是不可避免的。而黑客自然會積極利用各類手段促使這種失敗的發生,包括觸發特定故障以控制系統或軟件。正因為如此,我們必須制定合理的應急計劃。
在系統發生故障時,最重要的是確保默認值符合安全要求,即默認拒絕訪問。此外,大家應檢查故障返回值,撤銷其間的一切變更,并在故障后保證恢復至安全狀態。另外,即使可訪問性已經遭到破壞,系統的隱私性與完整性仍應保持不變。
另外,我們應確保黑客無法在系統故障期間訪問受保護的限制性數據。在系統發生故障時,往往會顯示一些與問題相關的敏感信息,而這些很可能為攻擊方帶來啟發。因此,我們應在默認情況下要求系統故障出現時拒絕訪問,并僅在預設條件得到滿足后才重新恢復可訪問能力。
使用威脅建模
提升軟件或應用程序安全性的最佳途徑之一,在于利用威脅建模對其進行測試。基本上,威脅建模就是在模擬攻擊者如何突破安全保護并奪取軟件控制權或盜竊有價值數據。開發者可以借此發現軟件中的漏洞,并消除風險或威脅。
威脅建模應在開發流程起始時開始進行,并一直持續至流程結束。如此一來,開發者即可全程確保對安全漏洞的監控,同時發現編寫代碼時是否引發其它疏漏。
一般來講,威脅建模基于安全對象發現,例如對用戶身份進行保護、關注應用程序安全問題可能帶來的聲譽影響,同時對應用程序的數據流、組件與受信邊界加以衡量。在評估之后,我們即可立足安全威脅及漏洞層面對應用程序進行分析。另外,我們還應立足黑客視角模擬攻擊樹結構,進而確定攻擊條件。通過這種角色換位,大家將更好地防范攻擊并保護軟件。
軟件開發是一項復雜的流程,一旦黑客發現了可乘之機,那么此前投入的一切努力都將付之東流。因此,每位開發者應從起步時即高度關注安全保障工作。事實已反復證明,在問題發生后再行保護的實施難度與實現成本會更高昂。
原文鏈接:https://dzone.com/articles/4-things-that-every-developer-should-know-about-se (作者 Oscar Waterworth)
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】