安全軟件開發(fā)淺談
前 言
數(shù)字化時代,軟件安全已成為不可忽視的問題。軟件安全不僅關系到數(shù)據(jù)的保密性、完整性和可用性,還直接影響到企業(yè)和個人的聲譽和經(jīng)濟利益。本文剖析軟件開發(fā)中的軟件設計、可能存在的安全問題和相應的防護措施,從五個方面對安全軟件開發(fā)進行簡要介紹,主要包括安全軟件設計、安全Web應用程序設計、Web應用程序攻擊、Web應用程序防護和漏洞挖掘,旨在幫助讀者對安全軟件開發(fā)有初步的認識。
安全軟件設計
安全軟件設計和開發(fā)的重要組成部分包括安全設計原則、軟件組件清單、應用程序安全性測試。
開發(fā)以安全設計原則制定應用程序真實性和完整性的檢驗機制,以安全的方式進行軟件配置,提高軟件安全。
軟件組件清單是應用程序開發(fā)中使用的開源和商業(yè)軟件組件的列表。通過組件清單可以更容易地識別和管理與應用程序使用的單個軟件組件相關的安全風險,為用戶提供更大的網(wǎng)絡供應鏈透明度。
應用程序安全性測試可以幫助軟件開發(fā)人員識別其應用程序中的漏洞。在此過程中,開發(fā)人員應該執(zhí)行靜態(tài)應用程序安全性測試和動態(tài)應用程序安全性測試,以實現(xiàn)全面的測試覆蓋。此外,軟件開發(fā)人員可以選擇使用一個額外的獨立方來幫助消除他們在測試自己的應用程序時可能出現(xiàn)的潛在問題。
安全Web應用程序設計
軟件開發(fā)人員可以利用Web應用程序框架來增強Web應用程序的安全性,同時減少開發(fā)時間。
HTTPS (Hypertext Transfer Protocol Secure)是采用TLS (Transport Layer Security)加密的超文本傳輸協(xié)議。在web應用程序中使用HTTPS可以幫助確保與web應用程序的交互是保密的,并且還可以維護這些交互的完整性。
Web應用程序編程接口(Application Programming Interfaces,API)可以促進計算設備之間的數(shù)據(jù)交換。因此,軟件開發(fā)人員應該在開發(fā)過程中減輕與它們使用相關的常見安全風險,比如減少使用安全性較差的web API,這些API會促進未經(jīng)授權的數(shù)據(jù)修改或訪問未經(jīng)授權發(fā)布到公共領域的數(shù)據(jù)。當客戶端調用web API時,確保客戶端的身份驗證和授權可以減少未經(jīng)授權的數(shù)據(jù)修改或訪問。最后,集中記錄和分析web API的使用可以幫助檢測惡意行為,并有助于在網(wǎng)絡安全事件之后進行調查。
Web應用程序攻擊
結構化查詢語言(Structured Query Language ,SQL)注入攻擊,通過使用動態(tài)生成的查詢,對數(shù)據(jù)庫內容的機密性、完整性和可用性構成了重大威脅。
SQL注入攻擊允許惡意行為者竊取數(shù)據(jù)庫內容、修改數(shù)據(jù)庫內容、刪除整個數(shù)據(jù)庫,甚至在某些情況下獲得對底層數(shù)據(jù)庫服務器的控制。此外,當來自web應用程序的數(shù)據(jù)庫查詢失敗時,它們可能會顯示有關數(shù)據(jù)庫結構的詳細錯誤信息。這可以被惡意行為者用來進一步定制他們的SQL注入攻擊。
Web應用程序防護
Web應用程序安全防護包括輸入驗證、輸出編碼、web應用程序防火墻、Web瀏覽器的控件防護策略和數(shù)據(jù)庫查詢集中記錄和分析。
輸入驗證。Web應用程序漏洞大多數(shù)是由于缺乏安全的輸入處理造成的。因此,在沒有進行驗證或清理的情況下,web應用程序不信任任何輸入,如網(wǎng)站地址及其參數(shù)、超文本標記語言(HTML)表單數(shù)據(jù)、cookie值或請求頭。驗證和清理包括確保表單字段只包含數(shù)字,確保結構化查詢語言查詢中使用的數(shù)據(jù)得到正確的清理,以及確保Unicode輸入得到適當?shù)奶幚怼?/p>
輸出編碼。輸出編碼可以減少跨站點腳本和其他內容注入攻擊的可能性。特別是,當外部數(shù)據(jù)源輸出給用戶時,輸出編碼非常有用,因為外部數(shù)據(jù)源可能不受相同級別的輸入過濾的約束。最常見的輸出編碼示例是將潛在危險的HTML字符轉換為其編碼的等效字符,例如將' < '、' > '和' & '轉換為'< '、'> '和'& '。
Web應用程序防火墻。當使用web應用程序防火墻時,應注意其配置,以確保軟件開發(fā)人員web服務器的互聯(lián)網(wǎng)協(xié)議(Internet Protocol ,IP)地址不會被惡意行為者識別,因為源服務器IP地址的知識可以允許WAF提供的保護被繞過。
Web瀏覽器的控件防護策略。Web應用程序可以使用基于Web瀏覽器的控件,如內容安全策略、超文本傳輸協(xié)議嚴格傳輸安全來幫助保護自己和用戶,這是通過在web應用程序的響應頭中設置安全策略來實現(xiàn)的。
數(shù)據(jù)庫查詢集中記錄和分析。集中記錄和分析由用戶發(fā)起的web應用程序對數(shù)據(jù)庫的所有查詢,可以幫助監(jiān)控數(shù)據(jù)庫的安全狀態(tài),檢測惡意行為,并有助于網(wǎng)絡安全事件后的調查。集中記錄和分析web應用程序崩潰和錯誤消息可以幫助監(jiān)控web應用程序的安全狀態(tài),檢測惡意行為并有助于調查網(wǎng)絡安全事件。
漏洞挖掘
漏洞挖掘可以幫助軟件開發(fā)人員提高其產(chǎn)品和服務的安全性,它為安全研究人員和其他公眾成員提供了一種以協(xié)調的方式負責任地通知他們漏洞的方法。在驗證和解決報告的漏洞后,它可以幫助軟件開發(fā)人員通知其客戶在其產(chǎn)品和服務中發(fā)現(xiàn)的漏洞,以及應該應用的任何補丁、更新或供應商緩解措施。
漏洞挖掘應包括接收、核實、解決和報告內部、外部各方披露的漏洞。軟件開發(fā)人員在通過內部應用程序安全測試或外部安全研究人員識別漏洞之后,應該確保及時報告和解決這些漏洞。在這過程中,軟件開發(fā)人員應該進行根本原因分析,并盡可能地尋求修復整個漏洞類。如果軟件開發(fā)人員不能通過補丁或更新及時解決漏洞,軟件開發(fā)人員應該就如何盡可能減少漏洞被利用的可能性、減少漏洞被利用的影響或兩者兼而有之提供建議。
小 結
本文主要從安全軟件設計、安全Web應用程序設計、Web應用程序攻擊、Web應用程序防護和漏洞挖掘五個方面從軟件設計、攻擊于防護等方面展開對安全軟件開發(fā)的分析,期望可以對想要初步了解安全軟件開發(fā)的讀者有所幫助。
參考文獻
[1] Australian Signals Directorate. Information Security Manual [EB/OL]. June, 2024. https://www.cyber.gov.au/resources-business-and-government/essential-cyber-security/ism.