軟體開發資安
軟體的資訊安全,是软件开发过程中的一部份,是和人以及實務有關的过程,目的在確保應用程式的機密性、完整性及可用性。一個有資訊安全意識下的軟體開發流程所產出的就是安全軟體,這些軟體在開發過程中就已考慮安全[1] 若在系统发展生命周期(SDLC)中的每一個階段都有良好的規劃以及管理,考慮安全性的開發是最有效果的,尤其是一些關鍵應用或是和敏感資料有關的應用。 軟體開發資安的解決方案不僅只在技術層次,還有其他層次的內容。 軟體開發的挑戰隨著資訊科技的進步,開發環境越來越複雜,而應用程式開發的安全性也更有挑戰。不論應用程式、系統或是網路,都持續的受到許多不同的安全攻擊,像是惡意程式碼或是阻斷服務攻擊。有些挑戰是來自網站的,例如病毒、木馬程式、邏輯炸彈、電腦蠕蟲、agents及applets等[2] 應用程式中可能會包括漏洞,可能是軟體工程師刻意引入的,也有可能是意外造成的。 面對這些可能的漏洞,有需要進行軟體、硬體及環境上的控制措施,不過這些無法避免因為程式撰寫實務不佳而造成的問題。像是用上下限以及一系列的檢查來核實使用者的輸入,有助於提升資料的品質。就算程式設計師依照最佳實務開發軟體,應用程式仍可能會因為一些無法預測的條件而失效,因此成功處理未預期失效的方式,首先就是記錄所有可以找到的資料,以供有問題時確認之用。隨著安全性的提昇,額外的成本以及管理負擔也會同步提昇。 一般來說,應用程式是用高階程式語言所寫成。這些語言本身也有其安全上的意涵。要產出安全的應用程式及系統,軟體開發流程最重要的核心活動包括:概念定義、功能需求、控制規格、設計審核、程式碼審核及walk-through、系統測試審核、維護及變更管理。 開發安全的軟體不只是軟體工程師的責任,也是利害相關者(包括專案經理、商業分析師、品質保證經理、資訊安全工程師、product owner)的責任。 基本原則有許多資訊安全的基本原則。利害相關者對這些原則的理解,以及在軟體上實現的作法,對軟體安全非常重要。這些原則有:
基本實務以下列出一些網頁應用安全中建議的最佳實務中,和軟體開發比較有關的內容
安全性測試安全性測試中常見的屬性包括有身分驗證(authentication)、授權(authorization)、機密性、完整性、可用性、不可抵賴性以及恢復力。最基本的安全性測試是要確保系統可以防範未授權人員存取資源及資料,有些應用程式的資料會透過網路傳遞,會經過一些伺服器以及網路服務,這些也是駭客接觸這些資料的機會。 總結所有的安全系統都會實施軟體、硬體、系統及網路的安全控制。每一個元件或是過程都會有保護層,保護公司寶貴的資料以及資源。有許多不同的安全控制可以整合在應用程式的開發流程中,以確保其安全性,並且避免未授權的存取。 參考資料
外部網頁
|
Portal di Ensiklopedia Dunia