CISP0209软件安全开发v3.0课件_第1页
CISP0209软件安全开发v3.0课件_第2页
CISP0209软件安全开发v3.0课件_第3页
CISP0209软件安全开发v3.0课件_第4页
CISP0209软件安全开发v3.0课件_第5页
已阅读5页,还剩78页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、软件安全(nqun)开发培训(pixn)机构名称讲师名字第一页,共八十三页。课程内容2软件安全开发知识体知识域软件安全开发概况软件安全需求和设计软件安全编码软件安全测试软件安全开发的关键工作软件安全开发的必要性软件安全开发背景知识子域软件安全开发模型及研究第二页,共八十三页。知识域:软件(run jin)安全开发概况知识子域:软件安全开发背景了解软件的发展(fzhn)和产生的安全问题了解软件安全问题产生的原因3第三页,共八十三页。软件(run jin)安全的基本概念软件的定义计算机程序方法规则和相关的文档资料以及在计算机上运行时所需的数据(IEEE)软件安全采用系统化规范化数量化的方法来指导(

2、zhdo)构建安全的软件软件安全基本概念使安全成为软件开发的必须部分软件安全工程化三个支柱:风险管理软件安全切入点安全知识4第四页,共八十三页。软件安全问题(wnt)广泛存在软件应用广泛电脑游戏火车票售票系统(xtng)多媒体教学手机航天飞机人造卫星软件安全问题广泛存在运行错误售票系统反应慢连不上崩溃多媒体教学系统死机黑客盗取泄漏的银行密码安全问题日益增加5第五页,共八十三页。软件(run jin)安全问题产生后果软件安全问题的后果造成产品运行(ynxng)不稳定,得不到正确结果甚至崩溃可靠性可用性被恶意攻击,导致信息泄漏/数据破坏等后果保密性完整性一些因软件安全问题导致的严重后果售票系统瘫痪

3、美国放射治疗仪超剂量辐射事件阿丽亚纳5号火箭首发失败事件Stuxnet病毒攻击伊朗布什尔核电站6第六页,共八十三页。漏洞情况(qngkung)统计中国国家漏洞(ludng)库最近七年漏洞(ludng)数量情况统计7第七页,共八十三页。软件产生安全(nqun)问题的原因内因软件开发安全意识淡薄软件开发缺乏安全知识软件趋向大型化和复杂化软件第三方扩展增多(zn du)外因软件使用场景更具威胁8第八页,共八十三页。软件(run jin)越来越复杂9Windows 系列(xli)软件源代码行数第九页,共八十三页。漏洞与软件(run jin)安全漏洞普遍存在平均(pngjn)每1000行程序存在20个缺

4、陷 (Dacey 2003)采用严格的软件开发质量管理机制和多重测试环节,软件公司的缺陷率( 千行代码):普通软件开发公司的缺陷密度为440个缺陷高水平的软件公司的缺陷密度为24个缺陷美国NASA的软件缺陷密度可达到0.1个缺陷漏洞已经成为危害软件安全的主要因素危及用户对软件的信任业务运营,还会危及一系列关键基础设施和应用10第十页,共八十三页。知识域:软件安全开发(kif)概况知识子域:软件安全开发的必要性理解(lji)软件安全保障的含义思路和目标了解传统软件开发的局限性理解软件安全开发生命周期的概念和必要性11第十一页,共八十三页。需要(xyo)安全的软件理想的安全软件不存在安全漏洞能抵御

5、各种攻击威胁按照预期的方式执行:do what is intended软件安全保障的思路通过(tnggu)在软件开发生命周期各阶段采取必要的相适应的安全措施来避免绝大多数的安全漏洞采取措施只能有效减少,但并不能完全杜绝所有的安全漏洞12第十二页,共八十三页。软件(run jin)安全保障软件可以规避安全漏洞而按照预期的方式执行其功能目标:在软件开发生命周期中提升软件的安全性可信赖性:无论是恶意而为还是无意疏忽,软件都没有可利用的漏洞存在可预见性:对软件执行时其功能符合(fh)开发者的意图的信心遵循性:将(软件开发)跨学科的活动计划并系统化,以确保软件过程和软件产品满足需求遵循相关标准13第十三

6、页,共八十三页。软件安全(nqun)保障与风险管理在软件安全保障中,需要贯彻风险管理的思想“安全就是风险管理”软件安全是以风险管理为基础安全不必是完美无缺的,但风险必须是能够管理的最适宜的软件安全策略就是最优的风险管理对策这是一个在有限资源前提下的最优选择问题(wnt)防范不足会造成直接的损失;防范过多又会造成间接的损失14第十四页,共八十三页。传统(chuntng)的软件开发局限性传统软件开发教育的局限性软件教育包括软件工程、数据结构、编译原理、系统结构、程序语言等缺乏安全开发教育传统开发人员能力的局限性对安全问题没有的足够理解不了解安全设计的基本原理不知道安全漏洞的常见类型不知道如何设计针

7、对安全的测试数据传统软件生命周期的局限性软件生命周期包括需求分析、架构设计、代码编写、测试和运行维护五个阶段缺乏安全介入的阶段15需要(xyo)安全的软件开发!第十五页,共八十三页。软件(run jin)安全开发生命周期软件安全开发采取措施防止由于设计开发提交升级或维护中的缺陷而导致的系统脆弱性20世纪末/21世纪初开始展开研究安全软件开发生命周期安全软件开发涵盖了软件开发整个生命周期通过软件开发的各个步骤(bzhu)来确保软件的安全性,其目标是确保安全的软件得以成功16第十六页,共八十三页。安全(nqun)软件开发生命周期将安全融入在设计/开发/测试等过程中融入安全在传统的过程中增加安全过程

8、安全提前介入NIST:在软件发布以后进行修复的代价是在软件设计和编码阶段即进行修复所花代价的30倍软件系统发布以后才进行漏洞修复代价是最高的,且常常伴随着软件系统使用者的极大(j d)损失实施软件安全开发规范指南最佳实践17第十七页,共八十三页。降低解决软件(run jin)安全问题的代价早期发现并改正错误有以下优点在软件开发生命周期中,后面的阶段(jidun)改正错误开销比前面的阶段(jidun)要高出数倍早期发现并改正错误可以减少时间和开销18第十八页,共八十三页。知识(zh shi)域:软件安全开发概况知识子域:软件安全开发模型及研究了解安全开发生命周期(SDL)的发展历程,理解SDL的

9、主要内容了解使安全成为软件开发必须的部分(BSI)系列模型了解综合的轻量级应用(yngyng)安全过程(CLASP)的主要内容了解软件保障成熟度模型(SAMM)的框架了解各个模型的特点及适用性19第十九页,共八十三页。可信计算安全(nqun)开发生命周期微软,2002.1,盖茨安全开发生命周期SDL(The Trustworthy Computing Security Development Lifecycle)自 2004 起,SDL 作为全公司(n s)的计划和强制政策,在将安全和隐私植入软件和企业文化方面发挥了重要作用通过将整体和实践方法相结合,SDL 致力于减少软件中漏洞的数量和严重性

10、SDL 在开发过程的所有阶段中均引入了安全和隐私20第二十页,共八十三页。SDL发展(fzhn)历史2002.1今20 世纪 90 年代中期到后期 (Melissa) 和 21 世纪初期(Code RedNimdaUPnP 等)出现了一系列影响重大的恶意软件事件(shjin),促使微软重新考虑开发人员安全过程和策略21第二十一页,共八十三页。SDL的阶段和安全(nqun)活动软件安全开发生命阶段(jidun)5+2个阶段16项必需的安全活动22第二十二页,共八十三页。SDL每个阶段(jidun)用到的工具23序号工具需求设计实现验证发布1SDL过程模板和MSF-Aglie+SDL过程模板2SD

11、L威胁建模工具3Banned.hSiteLock ATL模板FxCopC/C+源代码分析工具Anti-XSS库32位的CAT.NET64位的CAT.NET4BinScopeMiniFuzzSDL Regex FuzzerAppVerifier第二十三页,共八十三页。IE采用(ciyng)SDL后的效果24Source: Browser Vulnerability Analysis, Microsoft Security Blog 27-NOV-2007采用(ciyng)SDL之前采用SDL之后漏洞总数降低了35%高危漏洞数降低了63%正式发布后12个月内修复的漏洞总数第二十四页,共八十三页。B

12、SI系列(xli)模型BSI使安全成为(chngwi)软件开发必须的部分Building Security IN,BSIGray McGraw,Cigital公司在整个软件开发生命周期中要确保将安全作为软件的一个有机组成部分无须改变你的软件开发方法适用各种软件开发生命周期合作NIST美国国土安全部大学(加州大学戴维斯分校普林斯顿莱斯)25第二十五页,共八十三页。软件(run jin)安全的三根支柱三根支柱应用风险管理软件(run jin)安全的接触点知识26第二十六页,共八十三页。接触点模型(mxng)接触点,即在软件(run jin)开发生命周期中保障软件(run jin)安全一套最优方法一

13、种战术性方法在每一个开发阶段上尽可能地避免和消除漏洞“黑帽子”和“白帽子”27第二十七页,共八十三页。SSFSSF(Software Security Framework)软件(run jin)安全框架28监管信息/情报SSDL接触点部署策略和度量攻击模式架构分析渗透测试履约和策略安全特征和设计代码审计软件环境培训标准和需求安全测试配置管理和漏洞管理第二十八页,共八十三页。BSIMMBSI成熟度模型Building Security In Maturity ModeGary McGrawBrian Chess和Sammy Migues使用SSF对所有项目进行描述了解(lioji)别人的安全项目

14、过程,指导自己的安全项目目标是对真实的软件安全项目所开展的活动进行量化构建和不断发展软件安全行动的指南BSIMM 3.02011年42个公司(MicrosoftIntelGoogle)29第二十九页,共八十三页。BSIMM结果(ji gu)图30第三十页,共八十三页。CLASP综合(zngh)的轻量应用安全过程(Comprehensive, Lightweight Application Security Process (CLASP) )选取了30个特定的基于角色的活动(activities),用于提升整个开发团队的安全意识,并针对这些活动给出了相应的指南导则和检查列表31第三十一页,共八十

15、三页。CLASP介绍(jisho)基于(jy)角色项目经理 需求分析师 软件架构师 设计者 实施人员 集成和编译人员 测试者和测试分析师 安全审计员对于每个活动,CLASP描述了以下内容安全活动应该在什么时间应该如何实施如果不进行这项安全活动,将会带来的多大的风险如果实施这项安全活动,估计需要多少成本32第三十二页,共八十三页。SAMMOWASP SAMMSoftware Assurance Maturity Mode软件保证成熟度模型OWASP(开放Web应用安全项目)一个开放的框架,用以帮助制定并实施针对软件安全特定风险的策略评估一个组织已有的软件安全实践; 建立一个迭代的权衡的软件安全保

16、证计划; 证明(zhngmng)安全保证计划带来的实质性改善; 定义并衡量组织中与安全相关的措施 33第三十三页,共八十三页。SAMM规定了四个软件开发过程中的核心业务功能治理:组织管理其软件开发的过程和活动构造:组织在开发项目中确定目标并开发软件的过程与活动验证(ynzhng):组织测试和验证(ynzhng)软件的过程与活动部署:组织软件发布的相关管理过程与活动4个成熟度级别0-3级34第三十四页,共八十三页。OWASP SAMM35第三十五页,共八十三页。各模型(mxng)比较36SDL文档丰富,维护更新及时较多工具支持适合大型企业BSI接触点强调开发安全重点注重实用方法上手容易BSIMM

17、最佳实践参考他山之玉不强制实践CLASP 轻量级过程;以角色及其职责为核心适合小型企业SAMM开放框架安全知识要求较低和BSIMM的安全活动能对应第三十六页,共八十三页。知识域:软件安全开发(kif)关键工作知识子域:软件安全需求和设计了解(lioji)软件安全需求分析和安全设计的重要性理解软件安全设计基本原则理解影响系统安全性的6类威胁,以及威胁建模过程37第三十七页,共八十三页。软件(run jin)安全需求及安全设计的重要性安全编码?安全测试?传统(chuntng)方法:软件发布后测试等待修复BugGary McGraw :50%的安全问题由设计瑕疵引起安全提前介入,效益高,成本低38设

18、计缺陷举例Microsoft Bob明文存储口令,甚至将口令拿到客户端对比验证第三十八页,共八十三页。软件安全(nqun)需求及安全(nqun)设计的重要性软件安全(nqun)需求和设计是开发安全(nqun)软件的基础软件安全需求分析以风险管理为基础,建立“威胁”分析计划建立软件安全需求定义,确保软件安全需求定义正确安全需求应文档化软件安全设计软件系统的每一项需求,都应该在软件安全设计阶段认真考虑39第三十九页,共八十三页。安全设计(shj)原则最小特权权限(qunxin)分离最小共享完全中立心理可接受默认故障处理经济机制不信任纵深防御保护最薄弱的环节公开设计隐私保护攻击面最小化40第四十页,

19、共八十三页。受攻击面概念(ginin)什么是受攻击面对一个软件系统可以采取的攻击(gngj)方法集合,软件的功能API接口资源数据存储等都是受攻击面为什么要降低受攻击面一个软件的攻击面越大安全风险就越大41第四十一页,共八十三页。降低(jingd)受攻击面的方法第一步:分析产品功能的重要性(是否必须)第二步:分析从哪里访问这些(zhxi)功能第三步:采取合理措施(降低特权)42受攻击面增加远程访问受限访问本地访问仅管理员访问用户访问匿名访问第四十二页,共八十三页。降低软件(run jin)受攻击面策略重要等级为低的功能:攻击面大,取消(qxio)该功能重要等级为中的功能:攻击面大,设置为非默认

20、开启,需要用户配置后才予以开启重要等级为高的功能:攻击面大,关闭或限制一些接口方式,增加一些安全的保证措施或技术43降低受攻击面对于提高软件源代码安全性至关重要!第四十三页,共八十三页。减少(jinsho)软件受攻击面44较高受攻击面较低受攻击面默认执行默认关闭打开网络连接关闭网络连接同时侦听UDP和TCP流量仅侦听TCP流量匿名访问鉴别用户访问弱ACLs强ACLs管理员访问普通用户访问因特网访问本地子网访问代码以管理员或root权限运行代码以Network ServicesLocal Services或自定义的低权限账户运行统一缺省配置用户可选的配置ActiveX控件.NET代码标记有脚本安

21、全的ActiveX控件未标记有脚本安全的ActiveX控件非SiteLocked ActiveX控件SiteLocked ActiveX控件第四十四页,共八十三页。威胁(wixi)建模什么是威胁建模威胁建模是了解系统面临的安全威胁,确定威胁风险并通过适当的缓解措施以降低风险,提高系统安全性的过程为什么要威胁建模帮助在设计阶段充分了解各种安全威胁,并指导选择适当的应对措施对可能的风险进行管理可以重新验证(ynzhng)其架构和设计有助于软件的受攻击面降低45第四十五页,共八十三页。威胁(wixi)建模流程确定对象(duxing)识别威胁评估威胁消减威胁46威胁降低威胁漏洞攻击者第四十六页,共八十

22、三页。威胁(wixi)建模流程确定对象应用的可信任边界之内的所有功能组件边界之外的应用最实际部分识别威胁发现组件或进程存在的威胁威胁不等于漏洞评估威胁判断攻击发生概率攻击后果计算风险消减威胁重新设计并排除这个威胁使用标准的威胁消减技术发明新的消减方法根据安全Bug标准来确定是否可接受风险把威胁作为漏洞记录下来,以后再想办法消减47第四十七页,共八十三页。STRIDE建模方法(fngf)STRIDE建模微软SDL中提出发现或纠正设计(shj)级(design-level)的安全问题48SSpoolfing Identity假冒身份/欺骗标识TTampering with data篡改数据RRep

23、udiation抵赖IInformation Disclosure信息泄漏DDenial of Service拒绝服务EElevation of Privilege权限提升第四十八页,共八十三页。理解(lji)STRIDE威胁威胁安全属性定义举例Spoofing(哄骗)可鉴别性模仿其他人或实体伪装成或ntdll.dllTampering(篡改)完整性修改数据或代码修改硬盘DVD或网络数据包中的DLLRepudiation(抵赖)不可抵赖性声称没有执行某个动作“我没有发送过那封电子邮件”,“我没有修改过那个文件”,“亲爱的,我确实没有访问过那个网站!”Information Disclosure

24、(信息泄露)机密性把信息披露给那些无权知道的人允许某人阅读Windows源代码;公布某个Web网站的用户清单Denial of Service(拒绝服务)可用性拒绝为用户提供服务使得Windows或Web网站崩溃,发送数据包并耗尽CPU时间,将数据包路由到某黑洞中Elevation of Privilege(权限提升)授权获得非授权访问权允许远程因特网用户执行命令,让受限用户获得管理员权限49第四十九页,共八十三页。消减威胁(wixi)举例50消减(xio jin)威胁威胁类型消减机制举例消减技术举例假冒认证认证方式:Cookie认证Kerberos认证PKI纂改完整性哈希函数消息认证码数字签

25、名防篡改协议抵赖非抵赖性服务强认证安全审计数字签名时间戳信息泄露保密性加密保护秘密访问控制不保存秘密隐私保护协议拒绝服务可用性认证访问控制过滤流量控制授权特权提升授权访问控制列表最小权限运行第五十页,共八十三页。知识域:软件安全开发(kif)关键工作知识子域:软件安全编码理解通用安全编码准则:验证输入避免缓冲区溢出程序内部安全安全调用组件(z jin)禁止使用不安全函数等理解使用安全编译技术对提高编码安全水平的作用,了解常用安全编译技术理解源代码审核的目的及方式,了解常见源代码静态审核工具51第五十一页,共八十三页。通用(tngyng)安全编码准则验证输入避免缓冲区溢出程序内部(nib)安全安

26、全调用组件禁止使用不安全函数52第五十二页,共八十三页。验证(ynzhng)输入安全程序第一道防线是检查每一个不可信的输入DirectXMIDI 库,难以检查所有的输入,可能导致IE被恶意利用检查验证或者过滤输入不让恶意数据进入程序后续(hux)处理类似网络中部署防火墙何处检查最初接收数据时(第一次)使用数据时53第五十三页,共八十三页。验证输入(shr)常见输入源命令行参数数量数据格式内容环境变量环境变量可能超出期望有的环境变量存储格式存在危险(wixin)文件不信任可以被不可信用户控制的文件内容不信任临时文件网络来自网络的数据是“高度不可信的”其他来源54第五十四页,共八十三页。验证输入(

27、shr)常见数据类型字符串确定合法范围,拒绝非法字符(串)0(NIL)行结束编码0 x0a(unix)0 x0d 0 x0a (dos, windows)0 x0d (APPLE MacOS)0 x85 (IBM OS/390)特定字符系统(xtng)字符分割字符55第五十五页,共八十三页。验证(ynzhng)输入常见数据类型数字数字检查(正则表达式/ASCII值)负数检查(大数溢出为负数)Sendamil 攻击合法范围检查文件名最好不让(b rn)用户设置文件名避免特殊字符. / - -rf ./ com156第五十六页,共八十三页。验证(ynzhng)输入常见数据类型电子邮件地址限制合法的

28、电子邮件地址UTF-8变长编码URI/URL非法地址在合法地址后面增加(zngji)恶意内容57第五十七页,共八十三页。避免(bmin)缓冲区溢出缓冲区溢出缓冲区:包含相同数据类型的实例的一个连续计算机内存块溢出:数据被添加到分配给该缓冲区的内存块之外外部数据比目标空间大是一个非常普遍(pbin)而且严重的问题58第五十八页,共八十三页。避免(bmin)缓冲区溢出溢出后果攻击者可以使远程服务程序或者本地程序崩溃攻击者可以设计溢出后执行的代码C/C+语言语言特性(txng)决定大量的库函数存在溢出strcpystrcatgets等其他语言调用C语言库C#允许设置“不安全”例程59第五十九页,共八

29、十三页。避免(bmin)缓冲区溢出解决办法解决办法编码避免缓冲区溢出填充数据时计算边界动态分配内存控制输入使用替代的安全函数或函数库使用没有缓冲区溢出问题的函数:strncpystrncatC+中std:string使用替代库:Libmiblibsafe使用更新更安全的编译(biny)环境,打开具有安全防御机制的安全编译(biny)选项StackGuardProPolice/GS非执行的堆栈防御不可在堆栈上执行代码60第六十页,共八十三页。程序(chngx)内部安全程序内部接口(ji ku)安全程序内部接口数据的检查assert异常安全处理检测异常,安全处理各种可能运行路径检测到某些错误行为/

30、数据,必须以合适的方式处理,保证程序运行安全必要时立即拒绝服务,甚至不回送详细的错误代码61第六十一页,共八十三页。程序(chngx)内部安全最小化反馈避免给予不可靠用户过多的信息成功或失败作为(zuwi)跟踪检查的日志可以记录较为详细的信息认证程序在认证前尽量少给信息(版本)如果程序接受了密码,不要返回它避免拒绝服务攻击输入错误尽快返回设置超时延时服务62第六十二页,共八十三页。程序内部(nib)安全避免(bmin)竞争条件访问共享资源时(文件/变量)没有被适当地控制使用原子操作使用锁操作避免死锁安全使用临时文件很多安全漏洞发生在访问已知文件名或可猜测的临时文件时63第六十三页,共八十三页。

31、安全(nqun)调用其他组件应用程序实际上几乎都不会是自包含的,它们通常都会调用(dioyng)其他组件底层的操作系统数据库可重用的库网络服务(WEBDNS)64第六十四页,共八十三页。安全调用(dioyng)其他组件组件安全检查组件文档,搜索相关说明gets随机数使用经过(jnggu)认可的组件尽可能不调用外部命令,如果不得已要调用,必须严格检查参数systemopenexec65第六十五页,共八十三页。安全(nqun)调用其他组件返回值安全一定要检查返回值,调用是否成功成功时检查返回值,是否按照期望值处理数据中可能含有 NUL 字符无效字符或其他可能产生问题的东西错误时检查错误码传递数据安

32、全视安全需求和安全环境考虑(kol)传输加密,包括密码算法和安全协议66第六十六页,共八十三页。禁止使用(shyng)不安全函数编码中禁止使用(shyng)的危险函数举例禁止使用strcpy, wcscpy, trcpy, strcpy, _tcscpy, _ftcscpy,_mbscpystrcat, wcscat, trcat, strcat, _tcscat, _ftcscat,_mbscatvsprintf, vswprintf, wvsprintf, wvnsprintf, _vstprintfsprintf, swprintf, wsprintf, wnsprintf, _stpr

33、intfgets, _getws, _getts67第六十七页,共八十三页。安全(nqun)编译使用最新版本编译器与支持工具(gngj)使用编译器内置防御特性gcc -Wall -Wpointer-arith -Wstrict-prototypes -O2 68第六十八页,共八十三页。源代码审核(shnh)源代码审核就是检查源代码,检测并报告源代码中的可能导致安全弱点(rudin)的薄弱之处人工审核费时费力容易遗漏工具审核速度快,自动可升级知识库69 源代码审核关注编码中的实现缺陷,通常通过静态分析工具进行,它们扫描源代码,能够发现大约50%的安全问题第六十九页,共八十三页。代码(di m)审

34、核工具商业工具(gngj) CoverityFortifyOunce LabsSecureSoftware免费/开源工具BOONCqualXg+FindBugs70第七十页,共八十三页。“好”的源代码分析(fnx)工具安全性安全审核,不要以功能(gngnng)为主多层性软件的多层架构多层平台多种语言可扩展性扩展规则扩展技术知识性主用于分析,开发者也能“学到” 安全编程知识集成性支持与IDE集成,支持makeant等工具71第七十一页,共八十三页。知识(zh shi)域:软件安全开发关键工作知识子域:软件安全编码理解通用安全编码准则:验证(ynzhng)输入避免缓冲区溢出程序内部安全安全调用组件

35、禁止使用不安全函数等理解使用安全编译技术对提高编码安全水平的作用,了解常用安全编译技术理解源代码审核的目的及方式,了解常见源代码静态审核工具72第七十二页,共八十三页。为什么要软件安全(nqun)测试?软件测试按照特定规程,发现软件错误的过程检查软件是否满足规定的要求,或是清楚地了解预期结果与实际(shj)结果之间的差异其目的在于发现软件中的错误软件安全测试有关验证软件安全等级和识别潜在安全缺陷的过程查找软件自身程序设计中存在的安全隐患,并检查应用程序对非法侵入的防范能力传统测试仅考虑软件出错时的处理,没有考虑对软件的故意攻击73第七十三页,共八十三页。安全(nqun)测试在应用投产前,应由独立的安全团队对应用的安全性进行综合评估功能性安全测试对抗性安全测试传统测试方法白盒测试黑盒测试灰

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论