Remove ads

軟件的資訊安全,是軟件開發過程中的一部份,是和人以及實務有關的過程,目的在確保應用程式的機密性、完整性及可用性。一個有資訊安全意識下的軟件開發流程所產出的就是安全軟件,這些軟件在開發過程中就已考慮安全[1]

若在系統發展生命周期(SDLC)中的每一個階段都有良好的規劃以及管理,考慮安全性的開發是最有效果的,尤其是一些關鍵應用或是和敏感資料有關的應用。

軟件開發資安的解決方案不僅只在技術層次,還有其他層次的內容。

軟件開發的挑戰

隨着資訊科技的進步,開發環境越來越複雜,而應用程式開發的安全性也更有挑戰。不論應用程式、系統或是網絡,都持續的受到許多不同的安全攻擊,像是惡意程式碼或是阻斷服務攻擊。有些挑戰是來自網站的,例如病毒、木馬程式、邏輯炸彈、電腦蠕蟲、agents及applets等[2]

應用程式中可能會包括漏洞,可能是軟件工程師刻意引入的,也有可能是意外造成的。

面對這些可能的漏洞,有需要進行軟件、硬件及環境上的控制措施英語Information technology controls,不過這些無法避免因為程式撰寫實務不佳而造成的問題。像是用上下限以及一系列的檢查來核實使用者的輸入,有助於提升資料的品質。就算程式設計師依照最佳實務開發軟件,應用程式仍可能會因為一些無法預測的條件而失效,因此成功處理未預期失效的方式,首先就是記錄所有可以找到的資料,以供有問題時確認之用。隨着安全性的提昇,額外的成本以及管理負擔也會同步提昇。

一般來說,應用程式是用高階程式語言所寫成。這些語言本身也有其安全上的意涵。要產出安全的應用程式及系統,軟件開發流程最重要的核心活動包括:概念定義、功能需求、控制規格、設計審核、程式碼審核及walk-through、系統測試審核、維護及變更管理。

開發安全的軟件不只是軟件工程師的責任,也是利害相關者(包括專案經理、商業分析師、品質保證經理、資訊安全工程師、product owner)的責任。

Remove ads

基本原則

有許多資訊安全的基本原則。利害相關者對這些原則的理解,以及在軟件上實現的作法,對軟件安全非常重要。這些原則有:

  • 避免資訊外洩
  • 避免資訊被修改
  • 避免資訊被破壞
  • 確認誰是提出請求的人
  • 確認提出請求者的權限
  • 建立歷史證據的能力
  • 組態、會談(session)及錯誤/例外的管理

基本實務

以下列出一些網頁應用安全中建議的最佳實務中,和軟件開發比較有關的內容

  • 在客戶端以及伺服器端,都要針對輸入進行Sanitize
  • 請求/回應訊息編碼處理
  • 伺服器端使用HTTPS協助
  • 只用現今仍在使用的加密以及hashing演算法
  • 不允許直接列出目錄
  • 不要在cookies中儲存敏感資料
  • 檢查會談的隨機性
  • 在cookies中設定secure和HttpOnly
  • 使用TLS通訊協定,不要使用較早期的SSL協定
  • 實施高密碼強度的政策
  • 不要在表單的隱藏欄位中儲存敏感資料
  • 驗證所上傳檔案的功能是否正常
  • 設定加密的回應header
  • 確保第三方的函式庫是安全的
  • 隱藏網絡伺服器的資訊

安全性測試

安全性測試中常見的屬性包括有身分驗證(authentication)、授權(authorization)、機密性、完整性、可用性、不可抵賴性以及恢復力。最基本的安全性測試是要確保系統可以防範未授權人員存取資源及資料,有些應用程式的資料會透過網絡傳遞,會經過一些伺服器以及網絡服務,這些也是駭客接觸這些資料的機會。

總結

所有的安全系統都會實施軟件、硬件、系統及網絡的安全控制。每一個元件或是過程都會有保護層,保護公司寶貴的資料以及資源。有許多不同的安全控制可以整合在應用程式的開發流程中,以確保其安全性,並且避免未授權的存取。

參考資料

外部網頁

Wikiwand in your browser!

Seamless Wikipedia browsing. On steroids.

Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.

Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.

Remove ads