跳转到内容

软件开发资安

维基百科,自由的百科全书

软件的资讯安全,是软件开发过程中的一部分,是和人以及实务有关的过程,目的在确保应用程序的机密性、完整性及可用性。一个有资讯安全意识下的软件开发流程所产出的就是安全软件,这些软件在开发过程中就已考虑安全[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页面存档备份,存于互联网档案馆