关于软件开发安全的CISSP秘籍(一)

大部分公司依靠防火墙、入侵检测系统、内容过滤、反恶意软件、漏洞扫描仪及其他网络工具来解决安全问题。他们对这么多控制的依赖主要是因为软件包含很多漏洞,用户面临风险。企业环境有时被认为是“外硬内软”,即网络外围安全可能很强大,但内部软件程序在获取访问权限后很容易被利用。

对于软件问题,最好的办法是在一开始构建软件开发安全流程。然而,软件程序通常将功能摆在首位,而不是安全性。而其实,从一开始将安全构建到每个软件中要比随后增加安全性更为有效。

在这篇有关信息系统认证安全专家(CISSP)考试软件开发安全领域的文章中,笔者将探讨如何构建软件程序;哪些安全机制和战略可用于保护在访问、处理和存储过程中的数据;以及软件开发安全的常见威胁及应对方法。探讨的话题包括:

软件开发安全:模型、方法、生命周期阶段以及对开发过程的管理。

编程语言和分布式计算:软件架构、编程语言和概念、变化控制方法、改进模型、数据建模和结构、数据接口和交换方法。

数据库系统:模型、管理系统、查询语言、组件、数据仓库及挖掘、模式和安全措施。

安全威胁和应对方法:应用和系统面临的常见威胁,以及专家系统和人工神经网络如何应用于缓解威胁。

软件开发安全组织

由于软件最接近企业最重要的数据,现在有很多倡议和举措用于提高安全软件开发流程的使用率。还有很多团体和组织提供了安全软件开发的最佳做法,以帮助企业实现软件安全保护。

Web应用安全联盟(WASC)主要为万维网及基于Web的软件提供最佳做法安全标准。

开放Web应用安全项目(OWASP)同样也是专门处理Web安全问题的组织,该组织提供软件开发安全准则、测试程序和代码审查步骤,它还负责维护OWASP Top 10--当今企业面临的最大Web应用安全风险清单。

ISO/IEC 27034标准则提供了安全软件开发的最佳做法,符合ISO/IEC的信息安全管理系统模型及ISO/IEC 27000系列。该标准提供了应用安全概述和理念、组织规范性框架、应用安全管理流程、应用安全验证及针对特定应用的安全准则。

美国国土安全部有一个软件保障程序,该程序提供最佳做法、工具、准则、规则和其他资源,软件开发人员、架构师和安全从业人员可利用这些资源将安全构建到软件开发的每个阶段。

另外,MITRE的常见缺陷列表(CWE)提供有关最危险软件错误的信息。CWE为软件开发安全问题提供了常用语言和分类,并详细介绍了编程代码、产品设计和系统架构中发现的漏洞。NIST已经将这些CWE映射到其国家漏洞数据库(NVD)--这是美国政府基于标准的漏洞管理数据库。

安全软件开发

为特定系统确定适当的安全级别不是容易的事情,并且这取决于很多因素,包括操作系统的信任水平、它将连接到系统的安全水平、谁将会使用该系统、数据的敏感性、系统功能对企业的关键性以及部署最佳安全做法的成本等。了解系统开发的过程和经济学可帮助我们理解为什么目前生产环境中很少有系统被认为是足够安全。

这个安全软件开发领域涵盖内容包括:不同环境为何需要不同类型的安全性、解决故障状态的重要性以及平衡安全和满足业务需求的功能之间的难度。

现在的环境和技术的日益复杂化也让“通用型”安全方法失去作用,系统构建和软件开发的历史概述也可帮助说明为什么昨天的方法已经无法不再适用于当今超级互联世界。

软件开发生命周期

每个系统都有自己的开发生命周期,主要包括以下阶段:启动、开发、部署、操作/维护和处置。总的来说,这些被称为系统开发生命周期(SDLC)。

每个SDLC阶段都有特定的目标和要求;这个章节侧重于这些特定安全目标和要求以及它们如何整合到SDLC模型。这个领域涵盖的一些SDLC模型包括:

瀑布模型--这是一种按顺序的方法,它要求每个阶段完成后,下一个才能开始。这种方法难以整合变化,这是不灵活的模型。

V模型--这种模型强调每个阶段的核查和验证,需要在整个项目中进行测试,而不只是在最后。

增量模型--在整个软件开发阶段,软件会有多个开发周期。每个阶段提供可用的软件版本。

螺旋模型--这是一个迭代的方法,强调每次迭代的风险分析。它允许通过灵活渐进的方式整合客户反馈。

快速应用开发--这种模型整合了原型开发和迭代开发程序,其目标是加速软件开发过程。

灵活模型--在这种模型中,迭代和增量开发过程鼓励使用基于团队的协作。它侧重于灵活性和适应性,而不是严格的工艺结构。

作者:Shon Harris

来源:51CTO

时间: 2024-11-10 11:39:29

关于软件开发安全的CISSP秘籍(一)的相关文章

《Android开发秘籍(第2版)》——第1.7节软件开发工具包(SDK)

1.7 软件开发工具包(SDK) Android开发秘籍(第2版) Android SDK由平台.工具和示例代码以及开发Android应用所需的文档组成.它被构建成为Java开发工具包的附加组件,并包含一个面向Eclipse集成开发环境(IDE)的集成插件. 1.7.1 安装和升级 网上许多地方都有针对如何安装Android SDK的按部就班式的指导.例如,在Google的网站http://developer.android.com/sdk/上就有关于安装过程的全套链接.如今Google已将SD

软件开发的过程中,这些文档你都用到了吗(转)

导读:做软件的目的就是要满足客户的需求,这个需求包括功能.外观.操作.时间及性能等各方面.那么,在软件开发过程中那部分最重要呢,程序员说"毋庸置疑,我编写的程序实现了客户提出的功能以及业务流程,..... 众所周知,做软件的目的就是要满足客户的需求,这个需求包括功能.外观.操作.时间及性能等各方面.那么,在软件开发过程中那部分最重要呢,程序员说"毋庸置疑,我编写的程序实现了客户提出的功能以及业务流程,肯定我是最重要的",美工说"你开发的功能如果没有我的页面美化,是无

软件开发工具

       关于本次自考软件开发工具的学习,主要是让我们在学习了程序设计的基本知识后,进一步了解和掌握软件开发的各类工具,从而提高软件开发能力和水平,以适应未来工作的需要.        对于软件开发工具的学习,主要是根据课本中讲述的知识,来整理的个人思路,下面就用这幅图来解释一下.从图中,我们可以看出:主要从理论和实践两个大方面来分别讲述的.相对于其理论的叙述,在这里就不多说了,有机会的话,大家可以学习一下这本书.想要更好地软件的设计,又怎能离的开理论的支持!         自考,是我们成

提前认识软件开发(2) 软件开发工程师常用的工具软件

有一次,我打开电视机准备随便看看,无意中被一部战争片吸引住了.成千上万的共产党战士搭起云梯,想攻破一座城池.但是城楼上面的敌人负隅顽抗,拼了命地阻击我军的进攻.双方的伤亡都很惨重,但城就是攻不下来.眼看我军剩下的人不多了,突然不知从什么地方开出一辆坦克,两炮就把城门轰开了.我军趁势攻入城中,将敌人全部歼灭了. 这类电视剧比较常见,相信大家看了不止一次.但是,我看完之后,那个场景还一直留在我的脑海里.成千上万的人不如一辆坦克来得直接,说明了什么问题呢?我立马想到了一句古诗:工欲善其事,必先利其器.

面向对象软件开发的十大原则 (二)

对象                     面向对象软件开发的十大原则 (转二) 当定义方法的参数时,一定要使它们可以扩展.例如,下面这行代码是不可扩展的: Public Function PlaceOrder(sLastName as String, sFirstName as String, sAddress as String) 要想调用这个方法你必须传递这3个参数.但是如果你以后决定在定单上还需要电话号码,就必须修改函数签名,这就破坏了兼容性以及每个调用此方法的代码段.为了防止这个问题

面向对象软件开发的十大原则 (一)

对象                     面向对象软件开发的十大原则 (转一) 对于开发人员来说,时时回过头来检查一下应用程序是非常有用的.考虑一下这个应用程序是否达到了预期目的?是否遵循了最佳方案?要想实现目的是否还存在更好的方法?温故而知新,也许你会从回顾中发现新的思路. 本文就提出10种顶尖的面向对象的编程技术来帮助你对应用程序进行评价,希望你使用这10个顶尖技术从面向对象的编程中获得最大利益. 1. 重新审视对象的声明操作 如何声明对象变量会给对象的使用和性能带来重大的影响.你应该使

基于组件的.NET软件开发(1)

基于组件的.NET软件开发 前言 随着软件技术的飞速进步,现代的大型软件都广泛采用了基于软件组件的开发方式.以成熟的CBD(Component Based Design:基于组件的系统设计)理论为指导,在对系统的分析与设计完成之后,系统开发体现为复用已有组件.开发新组件以及将所有组件装配起来的过程.J2EE大规模地使用各种组件构照复杂的企业信息系统,获得了巨大的成功. 作为后来者,.NET framework汲取了J2EE的成功经验,在组件化开发方面有着自己独到的设计,在本文中,我们将介绍.NE

专为VB制做的多语言软件开发工具,可以轻松完成对可视界面的多语言化.

专为VB制做的多语言软件开发工具,可以轻松完成对可视界面的多语言化,您只需要制做语言包母板后翻译复制该母板即可.点这里下载示例工程. 界面介绍如下: 启动图标:点这里将启动该程序. 程序将向您的代码中添加以下代码,以便您访问语言包: API:  Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplic

提前认识软件开发(33) 数据操纵语言(DML)

数据操纵语言(Data Manipulation Language,DML)包括insert.delete和update语句,用于增.删.改数据. 本文用以下的表tb_employeeinfo作为例子加以说明: create table tb_employeeinfo ( employeeno varchar(20) not null, -- 员工工号 employeename varchar(20) not null, -- 员工姓名 employeeage int null -- 员工年龄