软体开发资安

软体的资讯安全,是软件开发过程中的一部份,是和人以及实务有关的过程,目的在确保应用程式的机密性、完整性及可用性。一个有资讯安全意识下的软体开发流程所产出的就是安全软体,这些软体在开发过程中就已考虑安全[1]

若在系统发展生命周期(SDLC)中的每一个阶段都有良好的规划以及管理,考虑安全性的开发是最有效果的,尤其是一些关键应用或是和敏感资料有关的应用。

软体开发资安的解决方案不仅只在技术层次,还有其他层次的内容。

软体开发的挑战

随著资讯科技的进步,开发环境越来越复杂,而应用程式开发的安全性也更有挑战。不论应用程式、系统或是网路,都持续的受到许多不同的安全攻击,像是恶意程式码或是阻断服务攻击。有些挑战是来自网站的,例如病毒、木马程式、逻辑炸弹、电脑蠕虫、agents及applets等[2]

应用程式中可能会包括漏洞,可能是软体工程师刻意引入的,也有可能是意外造成的。

面对这些可能的漏洞,有需要进行软体、硬体及环境上的控制措施英语Information technology controls,不过这些无法避免因为程式撰写实务不佳而造成的问题。像是用上下限以及一系列的检查来核实使用者的输入,有助于提升资料的品质。就算程式设计师依照最佳实务开发软体,应用程式仍可能会因为一些无法预测的条件而失效,因此成功处理未预期失效的方式,首先就是记录所有可以找到的资料,以供有问题时确认之用。随著安全性的提升,额外的成本以及管理负担也会同步提升。

一般来说,应用程式是用高阶程式语言所写成。这些语言本身也有其安全上的意涵。要产出安全的应用程式及系统,软体开发流程最重要的核心活动包括:概念定义、功能需求、控制规格、设计审核、程式码审核及walk-through、系统测试审核、维护及变更管理。

开发安全的软体不只是软体工程师的责任,也是利害相关者(包括专案经理、商业分析师、品质保证经理、资讯安全工程师、product owner)的责任。

基本原则

有许多资讯安全的基本原则。利害相关者对这些原则的理解,以及在软体上实现的作法,对软体安全非常重要。这些原则有:

  • 避免资讯外泄
  • 避免资讯被修改
  • 避免资讯被破坏
  • 确认谁是提出请求的人
  • 确认提出请求者的权限
  • 建立历史证据的能力
  • 组态、会谈(session)及错误/例外的管理

基本实务

以下列出一些网页应用安全中建议的最佳实务中,和软体开发比较有关的内容

  • 在客户端以及伺服器端,都要针对输入进行Sanitize
  • 请求/回应讯息编码处理
  • 伺服器端使用HTTPS协助
  • 只用现今仍在使用的加密以及hashing演算法
  • 不允许直接列出目录
  • 不要在cookies中储存敏感资料
  • 检查会谈的随机性
  • 在cookies中设定secure和HttpOnly
  • 使用TLS通讯协定,不要使用较早期的SSL协定
  • 实施高密码强度的政策
  • 不要在表单的隐藏栏位中储存敏感资料
  • 验证所上传档案的功能是否正常
  • 设定加密的回应header
  • 确保第三方的函式库是安全的
  • 隐藏网路伺服器的资讯

安全性测试

安全性测试中常见的属性包括有身分验证(authentication)、授权(authorization)、机密性、完整性、可用性、不可抵赖性以及恢复力。最基本的安全性测试是要确保系统可以防范未授权人员存取资源及资料,有些应用程式的资料会透过网路传递,会经过一些伺服器以及网路服务,这些也是骇客接触这些资料的机会。

总结

所有的安全系统都会实施软体、硬体、系统及网路的安全控制。每一个元件或是过程都会有保护层,保护公司宝贵的资料以及资源。有许多不同的安全控制可以整合在应用程式的开发流程中,以确保其安全性,并且避免未授权的存取。

参考资料

外部网页

  • Stewart, James (2012). CISSP Certified Information Systems Security Professional Study Guide Sixth Edition. Canada: John Wiley & Sons, Inc. pp. 275–319. ISBN 978-1-118-31417-3.
  • Report from Dagstuhl Seminar 12401Web Application Security Edited by Lieven Desmet, Martin Johns, Benjamin Livshits, and Andrei Sabelfeld, http://research.microsoft.com/en-us/um/people/livshits/papers%5Ctr%5Cdagrep_s12401.pdf页面存档备份,存于互联网档案馆
  • Web Application Security Consortium, The 80/20 Rule for Web Application Security by Jeremiah Grossman 2005, http://www.webappsec.org/projects/articles/013105.shtml页面存档备份,存于互联网档案馆
  • Open Web Application Security Project (OWASP), https://www.owasp.org/index.php/Main_Page页面存档备份,存于互联网档案馆
  • Wikipedia Network Security page, Network security
  • Open Web Application Security Project (OWASP) web site, https://www.owasp.org/images/8/83/Securing_Enterprise_Web_Applications_at_the_Source.pdf页面存档备份,存于互联网档案馆