做好風險管理 開發者如何提高程式安全性?

一直以來我們都針對企業層面分享了各式各樣的資安資訊,但近期發生的大型資料外洩,喚起了業界對編程方式安全性的關注,因此在本文之中,將會分享一下在編程時,開發者通常注意的事項。

其實程式編寫的過程之中,不同的編寫方式往往會對日後交付的系統速度、資源佔用情況以及安全性等做成直接影響,因此很多政府項目都會在招標時刻意要求開發者需要提供程式安全審查報告(Security Audit)!而在外國這種針對程式之中的編程方式及安全性審視,已漸漸成為公司的一種習慣!反觀在香港,除了應對政府項目的要求之外,很少公司會針對程式的編寫方式進行優化或針對程式的安全性進行審視,在現今追求科技的年代,香港公司在這方面仍有很大的進步空間。

如何進行程式安全審視?由於篇幅所限,本文未能將所有方式與大家分享,不過以下將就常見的注意事項,簡單的介紹一下。

數據庫是否安全?
首先要提的是針對數據庫的安全性,事關數據庫是每家公司、每個系統都必定會使用到的。就數據庫的安全性而言,首先在習慣上,大家應該需要將用來儲存用戶資料的資料庫數據進行加密;另外就是關於數據庫的帳戶安全性,問問自己是否因為貪一時之方便而直接採用 root 帳戶?另外數據庫之中的帳戶所使用的密碼會否過於簡單?會否有長期閒置的帳戶?如有,管理員必須盡快將之刪除,從而確保安全性。

登入、忘記密碼流程是否安全?
整個系統之中,用作進行登入的部份最為重要,亦是最容易被駭客用來突破防線的位置,因此在開發的過程之中,登入流程以及忘記密碼的流程等都十分重要!千萬不要使用未經證實其安全性的現成插件或直接套用來自 GitHub 的程式碼,事關這些由第三方開發的插件,除非你像除錯般,願意花上極多時間,親自逐一檢視程式碼當中的設計及內容,否則你永遠不會知道這些免費來自第三方所提供的插件或程式碼是否百分百安全。

是否有能力防禦 DoS (Denial of Service)?
另外你在進行開發時,如果系統提供網上版本的話,便需要注意系統所有可以用來輸入資料的位置是否已加入雙重認證,假如沒有加入的話,便應考慮加入,從而防止駭客利用機器人自動留言或不停註冊帳戶。例如現時十分流行的 CAPTCHA 又或者採用 Google 提供的 reCAPTCHA 都是一個不錯的選擇。除了針對 DoS 的簡單應對方法之外,亦要想想方法應對較麻煩的 DDoS 攻擊。而就著 DDoS 的攻擊而言,大家可採用由第三方提供的 CDN 服務。

以上我們只針對了在開發過程之中必然會面對到的範疇,例如是數據庫、認證以及流量攻擊等作出最簡單的介紹,其餘在開發過程之中需要考慮的,例如是數據傳輸過程、驗證、IaaS 的安全性、伺服器安全性、SSH 安全性、用戶使用習慣等等,都是常見需要注意的事情。