软件开发安全PPT课件.pptx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《软件开发安全PPT课件.pptx》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 开发 安全 PPT 课件
- 资源描述:
-
1、软件开发安全Software Development SecurityCISSP培训PPT之九1.关键知识领域A. A. 理解安全的概念并将其应用于软件开发的生命周期A.1 软件开发的生命周期A.2 成熟度模型A.3 操作与维护A.4 变更管理B. B. 理解环境与安全控制B.1 软件环境的安全B.2 编程语言的安全问题B.3 源代码的安全问题(如缓存溢出、权限升级、后门程序)B.4 配置管理C. C. 软件安全的有效性评估C.1 认证与认可(即系统授权)C.2 审计与记录C.3 风险分析与风险减缓2.目录哪里需要安全?系统开发生命周期软件开发生命周期安全软件开发的最佳实践软件开发模型能力成熟
2、度模型集成变更控制编程语言和概念分布式计算移动代码Web安全数据库管理专家系统/基于知识的系统人工神经网络恶意软件(malware)3.哪里需要安全(1) 为打败竞争对手向市场发布带有缺陷的软件(2) 黑客发现新软件中的新脆弱性和弱点(3) 在网站上公布这些脆弱性和利用它们的方法(4) 供应商开发并发布补丁,以修复脆弱性(5) 新补丁添加到大量的软件补丁中,所有网络管理员都需要测试和安装它们4.哪里需要安全不同的环境需要不同的安全环境与应用程序软件控制主要通过操作系统、应用程序、数据库管理控制来实现功能的复杂性功能需求-安全需求-安全机制的平衡数据的类型、格式与长度处理数据输入时,长度不是唯一
3、需要考虑的对象实现和默认配置问题理想的默认配置是默认拒绝,由于用户的友好配置往往实现的是最低安全防护5.系统开发生命周期启动(Initiation)需要一个新的系统被定义采购/开发(Acquisition/Development)新系统创建或购买实施(Implementation)新系统安装到生产环境运行/维护(Operations/Maintenance)系统的使用和关注处置(Disposal)系统从生产环境中删除6.启动(Initiation)确定安全需求(确定安全需求(Identify Security NeedsIdentify Security Needs),包括信息/应用的安全级别
4、和关键程度、基本安全目标、安全控制工作量;评估备选方案(Evaluate Alternatives)初始风险分析(初始风险分析(Initial Risk AnalysisInitial Risk Analysis),包括威胁/缺陷/风险、安全备选方案的技术、操作、经济可行性分析、安全相关成本效益评价;方案的选择/批准(Select/Approve Approach)确定安全框架(确定安全框架(Identify Security FrameworkIdentify Security Framework),包括基本安全问题和风险、确定服务水平协议。7.采购/开发(Acquisition/Devel
5、opment)需求分析(Requirements analysis)正式的风险评估(Formal risk assessment)安全功能需求分析(Security functional requirements analysis )安全保障需求分析(Security assurance requirements analysis )第三方评估(Third-party evaluations )安全计划(Security plan )安全测试和评估计划(Security test and evaluation plan)8.实施(Implementation)实施阶段着重于如何使用和操作开发好
6、的系统或应用程序。产品需要配置到一个正确的保护级别。应当执行功能性和性能测试,同时应当分析结果并将其与公司的安全需求进行比较认证(certification)一个检查和评估安全控制的过程,通常由外部独立检查机构执行认可(accreditation)管理层对系统的正式认可,也是对风险的明确接受。9.运行/维护(Operations/Maintenance)运行和维护阶段开始部分的工作包括配置新系统并将其正确地接入网络和工作环境通过持续进行脆弱性测试,监控系统活动和审计事件,就可以实现运作保证如果系统、产品或环境产生重大变化,那么就可能需要执行一次新的风险分析与一个新的认证和认可过程10.处置(D
7、isposal)当系统过期或报废时,可能需要采取一些步骤来保证以安全的方式进行过渡。根据系统中保存的数据的敏感度级别,应该采取不同的处理方式信息可能需要归档、备份至另一个系统、舍弃或者销毁如果数据是敏感的,并且需要被销毁,那么可能需要通过重写、消磁或者物理破坏存储介质进行清除。11.NIST所提供的SDLC模型分解启启 动动购置购置/开发开发实实 现现运作运作/维护维护处处 置置SDLC决定需求:认识需求任务与性能目标之间的联系评估备用资本资产准备资本审查和预算功能需求声明市场调查可靠性研究需求分析备用方案分析成本/收益分析软件转换研究成本分析风险管理计划购置规划安装检查验收测试初步的培训文档
8、资料性能评估合约修改运行维护处理的适当性交流与销售内部组织机构筛选转让与捐献终止合约安全注安全注意事项意事项安全分类初始风险评估风险评估安全功能需求分析安全保证需求分析成本注意事项与报告安全规划安全控制开发开发安全测试与评估其他规划组件检查与验收系统集成安全认证安全鉴定配置管理与控制持续监控信息保存介质净化硬件和软件处理12.软件开发生命周期项目管理(Project Management)需求收集阶段(Requirements Gathering Phase)设计阶段(Design Phase)开发阶段(Development Phase)测试/验证阶段(Testing/Validation
9、Phase)测试类型(Testing Types)发布维护阶段(Release/Maintenance Phase)13.项目管理(Project Management)项目管理流程应到位,以确保软件开发项目的正常执行每一个生命周期阶段。项目管理是产品开发的一个重要组成部分,安全管理是项目管理的一个重要组成部分。一个安全计划应该制定在开发项目的开始并融入功能性计划,以确保安全都是不容忽视的。第一个计划是广泛的,涵盖广泛的基础,为更详细的信息记录引用。任务分解(WBS)是一种用于以有组织的方式定义和组项目的各个工作元素的项目管理工具。SDLC的应以WBS格式被示出,以使各相的妥善处理。14.需求
10、收集阶段(Requirements Gathering Phase)安全需求安全风险评估隐私风险评估风险级别验收需求活动%设计活动%实现活动%需求活动中发现的一定比例的脆弱性将在需求分析、威胁建模和开发滥用案例过程中修复在需求和设计活动中发现的一定比例的脆弱性将在设计审查和验证过程中修复在需求、设计和编码活动中发现的一定比例的脆弱性将在代码审查、静态分析和安全测试过程中修复目标是将导致脆弱性的剩余缺陷最小化15.设计阶段(Design Phase)信息模型规定被处理信息的类型以及处理方式功能模型概括应用程序需要执行的任务和功能行为模型说明应用程序在特定事务处理发生过程中和发生之后的状态设计编码
11、测试功能模型功能模型行为模型行为模型信息模型信息模型数据设计数据设计体系结构体系结构设计设计过程设计过程设计程序模块程序模块已确证软件已确证软件16.设计阶段威胁建模攻击面分析17.开发阶段(Development Phase)根据详细设计规格说明构建源代码(Construct Source Code From Detailed Design Specification)编写或采购并安装安全相关代码(Write or Procure and Install Security-related Code),包括对代码的访问控制、标识和标识/记录;执行和评估单元测试(Perform and Eval
12、uate Unit Tests)执行单元测试并评估安全代码;在最终系统中实施详细设计(Implement Detailed Design into Final System)确保加入正式基线中包含并经过批准的安全部件。18.测试/验证阶段(Testing/Validation Phase)职责分离不同类型的环境(开发,测试和生产)应该适当分开,功能与操作不应重叠。开发人员不应该有机会获得在生产中使用的代码。代码应测试,提交给一个库,然后发送到生产环境。19.测试类型(Testing Types)单元测试(Unit testing )个体组件位于一个受控的环境中,编程人员在这里确证数据结构、逻辑
13、和边界条件集成测试(Integration testing)验证组建是否按设计规范中概述的那样协同工作验收测试(Acceptance testing)确保代码满足客户的需求回归测试(Regression testing )进行系统变更后重新测试,以确保功能性、性能和保护级别20.发布维护阶段(Release/Maintenance Phase)系统部署阶段的相关安全活动包括:活动安全方面的认可(Accreditation);用户安全相关培训;系统安装和数据迁移(Data Conversion)等;系统维护阶段的相关安全活动包括:对系统的监视、评估、审计、修补,确保安全控制有效运行;确保系统连续
14、运行、服务水平以及安全事件响应和更改控制等;系统更新阶段的相关安全活动包括:对更新内容开发和部署过程的安全控制等;21.安全软件开发最佳实践OWASP Top 10 2013注入 失效的身份认证和会话管理跨站脚本不安全的直接对象引用安全配置错误敏感信息泄露功能级访问控制缺失跨站请求伪造(CSRF)使用含有已知漏洞的组件未验证的重定向和转发22.软件开发模型构造修改模式基本上,没有架构设计是在生成修改模型。瀑布式瀑布式开发模型于1970年代提出,是一种早期的系统开发模型,虽然它对于大型和复杂的开发项目显得不够灵活和高效,但仍然得到广泛采用。可行性分析设计实施测试维护23.软件开发模型V型模型原型
15、法(Prototyping)为了克服瀑布模型的缺点而于1980年代提出的系统开发方法,其特征是首先建立一个应用程序的简化版本(原型),用于检查、分析和收集用户意见,在此基础上开发出更好的版本,再重复上述步骤直到开发出最终版本。需求系统测试计划系统测试高层设计集成测试计划集成测试底层设计单元测试计划单元测试实施24.软件开发模型增量模型系统/信息工程化分析设计编码测试增量1第一次增量交付分析设计编码测试第二次增量交付分析设计编码测试第三次增量交付分析设计编码测试第四次增量交付增量2增量3增量425.软件开发模型螺旋模型(Spiral Model)一种结合了瀑布和迭代开发技术的混合模型,类似于原型
16、法,不过每个迭代过程都使用瀑布模型加以规范,应用系统通过一次次瀑布式开发得以不断细化和完善,并且在每个周期进行一次项目风险分析以确定是否继续下一个开发周期;快速应用开发原型周期论证改进构建分析和快速设计测试实施26.能力成熟度模型软件能力成熟度模型(Capability Maturity Model for Software,CMM)是卡耐基美隆大学软件工程研究所(CEI)于1991年提出的软件质量管理方法,它将软件开发商的开发能力分为五个级别:初始型(初始型(InitialInitial),开发过程处于即兴和混乱状态,软件从成功依赖于个人的能力;重复型(重复型(RepeatableRepea
17、table),采用了项目管理的方法对开发费用、进度和产品功能进行跟踪,可以重复以前有效的开发过程;定义型(定义型(DefinedDefined),使用书面方式定义一整套标准化的管理和工程方法,以便用于机构的不同项目;量化管理型(量化管理型(Quantitatively ManagedQuantitatively Managed),对软件开发过程和软件质量进行量化考核以确保开发过程得到良好执行;持续优化型(持续优化型(OptimizingOptimizing),在量化考核的基础上使开发过程得以持续改善;27.能力成熟度模型第1级初始第2级可重复第3级定义第4级管理第5级优化流程无法预测,管理不良
18、,是反应式的针对项目特征的流程,并且是可重复的针对组织机构特征的流程,并且是前瞻性的对流程进行量化评估和控制专注于持续的流程改善28.变更控制1.为变更提出正式申请。2.分析需求。A.制定实施战略。B.计算实现的成本。C.审查任何安全问题。3.记录变更请求。4.提交变更请求审批。5.开发变更。A.重新编码产品程序段,并添加或删减功能。B.链接这些变更的代码到正式的变更控制申请。C.提交软件测试和质量认证。D.重复过程直到能够保障质量。E.记录变更版本。6.报告结果管理层。29.编程语言和概念计算机编程语言分为五代:第一代:机器(Machine)语言,CPU能直接执行的语言,每种类型的计算机都有
19、自己的机器语言;第二代:汇编(Assembly)语言,使用符号代表执行重要指令的一组二进制代码,简化了程序编写过程,属于过程(Procedural)语言;第三代:高级(High-level)语言,也被认为是过程语言,因为也需要它告诉机器怎样做,但语言风格更接近于自然语言,如COBOL、FORTRAN、BASIC、C语言;第四代:非常高级(Very High-level)语言,不是过程语言,因为它只要告诉机器做什么,而无需告诉怎么做,所以编程更简单,如查询(Query)语言、报表生成器;第五代:自然(Natural)语言,非常接近于人类语言,无需程序员学习特定的编程语法,使编程过程更接近于使用人
20、类语言与机器对话,如专家系统、人工智能语言;越高级的编程语言与人类的语言越相近,越简单,编程速度越快,标准化程度越高,也就越安全。30.语言翻译器汇编器(Assembler),用于将汇编语言代码转换为机器语言代码;编译器(Compiler),用于将高级语言代码一次性转换为机器语言结果代码(Object Code),以后可以在相同类型的计算机上直接运行;解释器(Interpreter),用于在程序执行过程中将高级语言代码依执行顺序逐一转换为机器指令,以后每次执行时都要重复这一过程;反编译器(Decompiler),将机器代码转换为高级语言;反汇编器(Deassembler),将机器代码转换为汇编
展开阅读全文