免费智能真题库 > 历年试卷 > 软件评测师 > 2012年下半年 软件评测师 上午试卷 综合知识
  第63题      
  知识点:   安全性测试方法   测试方法
  关键词:   安全测试   测试方法   安全   测试        章/节:   测试技术的分类       

 
以下不属于安全测试方法的是(63)。
 
 
  A.  安全功能验证
 
  B.  安全漏洞扫描
 
  C.  大数据量测试
 
  D.  数据侦听
 
 
 

 
  第32题    2012年下半年  
   38%
在安全测试中,模拟攻击试验以模拟攻击来验证软件或信息系统的安全防护能力,其中拒绝服务(DoS)攻击是一种在安全测试中经常模拟..
  第69题    2016年下半年  
   54%
安全日志是软件产品的一种被动防范措施,是系统重要的安全功能,因此安全日志测试是软件系统安全性测试的重要内容,下列不属于安..
  第9题    2021年下半年  
   39%
可以有效防治计算机病毒的策略是()。
   知识点讲解    
   · 安全性测试方法    · 测试方法
 
       安全性测试方法
               功能验证
               功能验证是采用软件测试当中的黑盒测试方法,对涉及安全的软件功能,如:用户管理模块、权限管理模块、加密系统、认证系统等进行测试,主要是验证上述功能是否有效,具体方法请参见黑盒测试方法。
               漏洞扫描
               安全漏洞扫描通常都是借助于特定的漏洞扫描器完成的。漏洞扫描器是一种自动检测远程或本地主机安全性弱点的程序。通过使用漏洞扫描器,系统管理员能够发现所维护信息系统存在的安全漏洞,从而在信息系统网络安全保卫战中做到“有的放矢”,及时修补漏洞。按常规标准,可以将漏洞扫描器分为两种类型:主机漏洞扫描器(Host Scanner)和网络漏洞扫描器(Network Scanner)。主机漏洞扫描器是指在系统本地运行检测系统漏洞的程序,如著名的COPS、Tripewire、Tiger等自由软件。网络漏洞扫描器是指基于网络远程检测目标网络和主机系统漏洞的程序,如Satan、ISS Internet Scanner等。
               安全漏洞扫描是可以用于日常安全防护,同时可以作为对软件产品或信息系统进行测试的手段,可以在安全漏洞造成严重危害前,发现漏洞并加以防范。
               模拟攻击试验
               对于安全测试来说,模拟攻击试验是一组特殊的黑盒测试案例,我们以模拟攻击来验证软件或信息系统的安全防护能力,下面简要列举在数据处理与数据通信环境中特别关心的几种攻击。在下列各项中,出现了“授权”与“非授权”两个术语。“授权”意指“授予权力”,包含两层意思:这里的权力是指进行某种活动的权力(例如访问数据);这样的权力被授予某个实体、代理人或进程。于是,授权行为就是履行被授予权力(未被撤销)的那些活动。
               . 冒充:就是一个实体假装成一个不同的实体。冒充常与某些别的主动攻击形式一起使用,特别是消息的重演与篡改。例如,截获鉴别序列,并在一个有效的鉴别序列使用过一次后再次使用。特权很少的实体为了得到额外的特权,可能使用冒充成具有这些特权的实体,举例如下。
               ①口令猜测:一旦黑客识别了一台主机,而且发现了基于NetBIOS、Telnet或NFS服务的可利用的用户账号,并成功地猜测出了口令,就能对机器进行控制。
               ②缓冲区溢出:由于在很多的服务程序中大意的程序员使用类似于“strcpy(),strcat()”不进行有效位检查的函数,最终可能导致恶意用户编写一小段程序来进一步打开安全缺口,然后将该代码放在缓冲区有效载荷末尾,这样,当发生缓冲区溢出时,返回指针指向恶意代码,执行恶意指令,就可以得到系统的控制权。
               . 重演:当一个消息或部分消息为了产生非授权效果而被重复时,出现重演。例如,一个含有鉴别信息的有效消息可能被另一个实体所重演,目的是鉴别它自己(把它当作其他实体)。
               . 消息篡改:数据所传送的内容被改变而未被发觉,并导致非授权后果,如下所示。
               ①DNS高速缓存污染:由于DNS服务器与其他名称服务器交换信息的时候并不进行身份验证,这就使得黑客可以加入不正确的信息,并把用户引向黑客自己的主机。
               ②伪造电子邮件:由于SMTP并不对邮件发送者的身份进行鉴定,因此黑客可以对内部客户伪造电子邮件,声称是来自某个客户认识并相信的人,并附上可安装的特洛伊木马程序,或者是一个指向恶意网站的链接。
               . 服务拒绝:当一个实体不能执行它的正常功能,或它的动作妨碍了别的实体执行它们的正常功能的时候,便发生服务拒绝。这种攻击可能是一般性的,比如一个实体抑制所有的消息,也可能是有具体目标的。例如,一个实体抑制所有流向某一特定目的端的消息,如安全审计服务。这种攻击可以是对通信业务流的抑制,或产生额外的通信业务流。也可能制造出试图破坏网络操作的消息,特别是如果网络具有中继实体,这些中继实体根据从别的中继实体那里接收到的状态报告,来作出路由选择的决定。拒绝服务攻击种类很多,举例如下。
               ①死亡之ping(Ping of Death):由于在早期的阶段,路由器对包的最大尺寸都有限制,许多操作系统对TCP/IP栈的实现在ICMP包上都规定为64KB,并且在读取包的标题头之后,要根据该标题头里包含的信息来为有效载荷生成缓冲区。当产生畸形的、声称自己的尺寸超过ICMP上限,也就是加载尺寸超过64K上限的包时,就会出现内存分配错误,导致TCP/IP堆栈崩溃,致使接受方宕机。
               ②泪滴(Teardrop):泪滴攻击利用那些在TCP/IP堆栈实现中信任IP碎片中的包的标题头所包含的信息来实现自己的攻击。IP分段含有指示该分段所包含的是原包的哪一段的信息,某些TCP/IP(包括Service Pack 4以前的NT)在收到含有重叠偏移的伪造分段时将崩溃。
               ③UDP洪水(UDP Flood):各种各样的假冒攻击利用简单的TCP/IP服务,如Chargen和Echo来传送毫无用处的数据以占满带宽。通过伪造与某一主机的Chargen服务之间的一次的UDP连接,回复地址指向开着Echo服务的一台主机,这样就生成在两台主机之间的足够多的无用数据流,如果数据流足够多,就会导致带宽的服务攻击。
               ④SYN洪水(SYN Flood):一些TCP/IP栈的实现,只能等待从有限数量的计算机发来的ACK消息,因为它们只有有限的内存缓冲区用于创建连接,如果这一缓冲区充满了虚假连接的初始信息,该服务器就会对接下来的连接请求停止响应,直到缓冲区里的连接企图超时为止。在一些创建连接不受限制的实现里,SYN洪水也具有类似的影响。
               ⑤Land攻击:在Land攻击中,一个特别打造的SYN包的原地址和目标地址都被设置成某一个服务器地址,这将导致接受服务器向它自己的地址发送SYN-ACK消息,结果,这个地址又发回ACK消息并创建一个空连接,每一个这样的连接都将保留,直到超时。各种系统对Land攻击的反应不同,许多UNIX实现将崩溃,NT变得极其缓慢(大约持续5分钟)。
               ⑥Smurf攻击:一个简单的Smurf攻击,通过使用将回复地址设置成受害网络的广播地址的ICMP应答请求(ping)数据包,来淹没受害主机的方式进行,最终导致该网络的所有主机都对此ICMP应答请求作出答复,导致网络阻塞,比“Ping of Death”洪水的流量高出一或两个数量级。更加复杂的Smurf将源地址改为第三方的受害者,最终导致第三方雪崩。
               ⑦Fraggle攻击:Fraggle攻击对Smurf攻击作了简单的修改,使用的是UDP应答消息,而非ICMP。
               ⑧电子邮件炸弹:电子邮件炸弹是最古老的匿名攻击之一,通过设置一台机器,不断大量地向同一地址发送电子邮件,攻击者能够耗尽接收者网络的带宽。
               ⑨畸形消息攻击:各类操作系统上的许多服务都存在此类问题,由于这些服务在处理信息之前没有进行适当正确的错误校验,在收到畸形的信息时可能会崩溃。
               . 内部攻击:当系统的合法用户以非故意或非授权方式进行动作时就成为内部攻击。多数已知的计算机犯罪都和使系统安全遭受损害的内部攻击有密切的关系。能用来防止内部攻击的保护方法包括:所有管理数据流进行加密;利用包括使用强口令在内的多级控制机制和集中管理机制来加强系统的控制能力;为分布在不同场所的业务部门划分VLAN,将数据流隔离在特定部门;利用防火墙为进出网络的用户提供认证功能,提供访问控制保护;使用安全日志记录网络管理数据流等。
               . 外部攻击:外部攻击可以使用的办法有:搭线(主动的与被动的)、截取辐射、冒充为系统的授权用户,冒充为系统的组成部分、为鉴别或访问控制机制设置旁路等。
               . 陷阱门:当系统的实体受到改变,致使一个攻击者能对命令或对预定的事件或事件序列产生非授权的影响时,其结果就称为陷阱门。例如,口令的有效性可能被修改,使得除了其正常效力之外也使攻击者的口令生效。
               . 特洛伊木马:对系统而言的特洛伊木马,是指它不但具有自己的授权功能,而且还有非授权功能。一个向非授权信道拷贝消息的中继就是一个特洛伊木马。典型的特洛伊木马有NetBus、BackOrifice和BO2k等。
               侦听技术
               侦听技术实际上是在数据通信或数据交互过程,对数据进行截取分析的过程。目前最为流行的是网络数据包的捕获技术,通常我们称为Capture,黑客可以利用该项技术实现数据的盗用,而测试人员同样可利用该项技术实现安全测试。
               该项技术主要用于对网络加密的验证。
 
       测试方法
        根据是否执行软件,将软件测试方法分为静态测试和动态测试。动态测试是建立在程序的执行过程中,根据是否要求了解被测对象的内部,分为黑盒测试和白盒测试。
               静态测试和动态测试
                      静态测试
                      静态测试方法包括检查单和静态分析方法,对软件文档的静态测试方法主要是以检查单的形式进行文档审查,而对软件代码的静态测试方法一般采用代码审查、代码走查和静态分析的形式进行。
                      静态分析是一种对代码的机械性和程序化的特性分析方法。一般包括控制流分析、数据流分析、接口分析和表达式分析。
                      代码审查是检查代码和设计的一致性、代码执行标准的情况、代码逻辑表达的正确性、代码结构的合理性以及代码的可读性。代码审查应根据所使用的语言和编码规范确定审查所用的检查单,检查单的设计或采用应经过评审。
                      代码走查是由测试人员组成小组,准备一批有代表性的测试用例,集体扮演计算机的角色,按照程序的逻辑,逐步运行测试用例,查找被测软件缺陷。代码走查应由测试人员集体阅读讨论程序,是用“人脑”执行测试用例并检查程序。
                      对于规模较小、安全性要求很高的代码也可进行形式化证明。静态分析常需要使用软件工具进行。
                      静态测试的特点有:不必设计在计算机上执行的测试用例;可充分发挥人的逻辑思维优势;不需特别条件,容易开展;发现错误的同时也就定位了错误,不需作额外的错误定位工作。
                      动态测试
                      动态测试是建立在程序的执行过程中,根据是否对被测对象内部的了解,分为黑盒测试和白盒测试。
                      黑盒测试是一种按照软件功能说明设计测试数据的技术,不考虑程序内部结构和编码结构,也不需考虑程序的语句及路径,只需了解输入/输出之间的关系,依靠这一关系和软件功能说明确定测试数据,判定测试结果的正确性。黑盒测试又称功能测试、数据驱动测试或基于需求的测试。
                      白盒测试是一种按照程序内部逻辑结构和编码结构设计测试数据的技术,可以看到程序内部结构,并根据内部结构设计测试数据,使程序中的每个语句、每个条件分支、每个控制路径的覆盖情况都在测试中受到检验。白盒测试又称结构测试、逻辑测试或基于程序的测试。
                      动态测试的特点有:实际运行被测程序;必须设计测试用例来运行;测试结果分析工作量大,测试工作费时、费力;投入人员多、设备多,处理数据多,要求有较好的管理和工作规程。
                      在软件动态测试过程中,应采用适当的测试方法,实现测试要求。配置项测试和系统测试一般采用黑盒测试方法;部件测试一般主要采用黑盒测试方法,辅助以白盒测试方法;单元测试一般采用白盒测试方法,辅助以黑盒测试方法。
               黑盒测试
               黑盒测试方法一般采用功能分解、等价类划分、边界值分析、判定表、因果图、随机测试、猜错法和正交试验法等。
                      功能分解
                      功能分解是将需求规格说明中每一个功能加以分解,确保各个功能被全面地测试。功能分解是一种较常用的方法。
                      步骤如下:
                      (1)使用程序设计中的功能抽象方法把程序分解为功能单元。
                      (2)使用数据抽象方法产生测试每个功能单元的数据。
                      功能抽象中程序被看成一种抽象的功能层次,每个层次可标识被测试的功能,层次结构中的某一功能有由其下一层功能定义。按照功能层次进行分解,可以得到众多的最低层次的子功能,以这些子功能为对象,进行测试用例设计。
                      数据抽象中,数据结构可以由抽象数据类型的层次图来描述,每个抽象数据类型有其取值集。程序的每一个输入和输出量的取值集合用数据抽象来描述。
                      等价类划分
                      等价类划分是在分析需求规格说明的基础上,把程序的输入域划分成若干部分,然后在每部分中选取代表性数据形成测试用例。
                      步骤如下:
                      (1)划分有效等价类:对规格说明是有意义、合理的输入数据所构成的集合。
                      (2)划分无效等价类:对规格说明是无意义、不合理的输入数据所构成的集合。
                      (3)为每一个等价类定义一个唯一的编号。
                      (4)为每一个等价类设计一组测试用例,确保覆盖相应的等价类。
                      边界值分析
                      边界值分析是针对边界值进行测试的。使用等于、小于或大于边界值的数据对程序进行测试的方法就是边界值分析方法。
                      步骤如下:
                      (1)通过分析需求规格说明,找出所有可能的边界条件。
                      (2)对每一个边界条件,给出满足和不满足边界值的输入数据。
                      (3)设计相应的测试用例。
                      对满足边界值的输入可以发现计算错误,对不满足的输入可以发现域错误。该方法会为其他测试方法补充一些测试用例,绝大多数测试都会用到本方法。
                      判定表
                      判定表由四部分组成:条件桩、条件条目、动作桩、动作条目。任何一个条件组合的取值及其相应要执行的操作构成规则,条目中的每一列是一条规则。
                      条件引用输入的等价类,动作引用被测软件的主要功能处理部分,规则就是测试用例。
                      建立并优化判定表,把判定表中每一列表示的情况写成测试用例。
                      该方法的使用有以下要求:
                      (1)需求规格说明以判定表形式给出,或是很容易转换成判定表。
                      (2)条件的排列顺序不会影响执行哪些操作。
                      (3)规则的排列顺序不会影响执行哪些操作。
                      (4)每当某一规则的条件已经满足,并确定要执行的操作后,不必检验别的规则。
                      (5)如果某一规则的条件的满足,将执行多个操作,这些操作的执行与顺序无关。
                      因果图
                      因果图方法是通过画因果图,把用自然语言描述的功能说明转换为判定表,然后为判定表的每一列设计一个测试用例。
                      步骤如下:
                      (1)分析需求规格说明,引出原因(输入条件)和结果(输出结果),并给每个原因和结果赋予一个标识符。
                      (2)分析需求规格说明中语义的内容,并将其表示成连接各个原因和各个结果的“因果图”。
                      (3)在因果图上标明约束条件。
                      (4)通过跟踪因果图中的状态条件,把因果图转换成有限项的判定表。
                      (5)把判定表中每一列表示的情况生成测试用例。
                      如果需求规格说明中含有输入条件的组合,宜采用本方法。有些软件的因果图可能非常庞大,根据因果图得到的测试用例数目非常多,此时不宜使用本方法。
                      随机测试
                      随机测试指测试输入数据是在所有可能输入值中随机选取的。测试人员只需规定输入变量的取值区间,在需要时提供必要的变换机制,使产生的随机数服从预期的概率分布。该方法获得预期输出比较困难,多用于可靠性测试和系统强度测试。
                      猜错法
                      猜错法是有经验的测试人员,通过列出可能有的错误和易错情况表,写出测试用例的方法。
                      正交实验法
                      正交实验法是从大量的实验点挑出适量的、有代表性的点,应用正交表,合理地安排实验的一种实验设计方法。
                      利用正交实验法来设计测试用例时,首先要根据被测软件的需求规格说明找出影响功能实现的操作对象和外部因素,把它们当作因子,而把各个因子的取值当作状态,生成二无的因素分析表。然后,利用正交表进行各因子的状态的组合,构造有效的测试输入数据集,并由此建立因果图。这样得出的测试用例的数目将大大减少。
               白盒测试
               白盒测试方法一般包括控制流测试(语句覆盖测试、分支覆盖测试、条件覆盖测试、修订的条件/判定覆盖MC/DC、条件组合覆盖测试、路径覆盖测试)、数据流测试、程序变异、程序插桩、域测试和符号求值等。
                      控制流测试
                      控制流测试依据控制流程图产生测试用例,通过对不同控制结构成分的测试验证程序的控制结构。所谓验证某种控制结构即指使这种控制结构在程序运行中得到执行,也称这一过程为覆盖。以下介绍几种覆盖:
                      (1)语句覆盖。语句覆盖要求设计适当数量的测试用例,运行被测程序,使得程序中每一条语句至少被遍历,语句覆盖在测试中主要发现错误语句。
                      (2)分支覆盖。分支覆盖要求设计适当数量的测试用例,运行被测程序,使得程序中每个真值分支和假值分支至少执行一次,分支覆盖也称判定覆盖。
                      (3)条件覆盖。条件覆盖要求设计适当数量的测试用例,运行被测程序,使得每个判断中的每个条件的可能取值至少满足一次。
                      (4)修订的条件/判定覆盖(MC/DC——Modified Condition/Decision Coverage)。修订的条件/判定覆盖要求设计适当数量的测试用例,运行被测程序,使得每个判定中的每个条件都曾独立的影响判定的结果至少一次(独立影响意思是在其他的条件不变的情况下,只改变一个条件,就可影响整个判定的值)。
                      对安全性要求比较高的软件,一般采用此覆盖要求。此覆盖要求在测试用例的效率和数量之间较为平衡。
                      (5)条件组合覆盖。条件组合覆盖要求设计适当数量的测试用例,运行被测程序,使得每个判断中条件的各种组合至少出现一次,这种方法包含了“分支覆盖”和“条件覆盖”的各种要求。
                      (6)路径覆盖。路径覆盖要求设计适当数量的测试用例,运行被测程序,使得程序沿所有可能的路径执行,较大程序的路径可能很多,所以在设计测试用例时,要简化循环次数。
                      以上各种覆盖的控制流测试步骤如下:
                      (1)将程序流程图转换成控制流图。
                      (2)经过语法分析求得路径表达式。
                      (3)生成路径树。
                      (4)进行路径编码。
                      (5)经过译码得到执行的路径。
                      (6)通过路径枚举产生特定路径的测试用例。
                      控制流图是描述程序控制流的一种图示方式,它由结点和定向边构成。控制流图的结点代表一个基本块,定向边代表控制流的方向。其中要特别注意的是,如果判断中的条件表达式是复合条件,即条件表达式是由一个或多个逻辑运算符连接的逻辑表达式,则需要改变复合条件的判断为一系列单个条件的嵌套的判断。控制流图的基本结构如下图所示。
                      
                      控制流图基本结构
                      数据流测试
                      数据流测试是用控制流程图对变量的定义和引用进行分析,查找出未定义的变量或定义了而未使用的变量,这些变量可能是拼错的变量、变量混淆或丢失了语句。数据流测试一般使用工具进行。
                      数据流测试通过一定的覆盖准则,检查程序中每个数据对象的每次定义、使用和消除的情况。
                      数据流测试步骤:
                      (1)将程序流程图转换成控制流图。
                      (2)在每个链路上标注对有关变量的数据操作的操作符号或符号序列。
                      (3)选定数据流测试策略。
                      (4)根据测试策略得到测试路径。
                      (5)根据路径可以获得测试输入数据和测试用例。
                      动态数据流异常检查在程序运行时执行,获得的是对数据对象的真实操作序列,克服了静态分析检查的局限,但动态方式检查是沿与测试输入有关的一部分路径进行的,检查的全面性和程序结构覆盖有关。
                      程序变异
                      程序变异是一种错误驱动测试,是为了查出被测软件在做过其他测试后还剩余一些的小错误。本方法应用于测试工具。
                      程序插装
                      程序插装是向被测程序中插入操作以实现测试目的方法。程序插装不应该影响被测程序的运行过程和功能。
                      有很多的工具有程序插装功能。由于数据记录量大,手工进行将是一件很烦琐的事。
                      域测试
                      域测试是要判别程序对输入空间的划分是否正确。该方法限制太多,使用不方便,供有特殊要求的测试使用。
                      符号求值
                      符号求值是允许数值变量取“符号值”以及数值。符号求值可以检查公式的执行结果是否达到程序预期的目的;也可以通过程序的符号执行,产生出程序的路径,用于产生测试数据。符号求值最好使用工具,在公式分支较少时手工推导也是可行的。
   题号导航      2012年下半年 软件评测师 上午试卷 综合知识   本试卷我的完整做题情况  
1 /
2 /
3 /
4 /
5 /
6 /
7 /
8 /
9 /
10 /
11 /
12 /
13 /
14 /
15 /
 
16 /
17 /
18 /
19 /
20 /
21 /
22 /
23 /
24 /
25 /
26 /
27 /
28 /
29 /
30 /
 
31 /
32 /
33 /
34 /
35 /
36 /
37 /
38 /
39 /
40 /
41 /
42 /
43 /
44 /
45 /
 
46 /
47 /
48 /
49 /
50 /
51 /
52 /
53 /
54 /
55 /
56 /
57 /
58 /
59 /
60 /
 
61 /
62 /
63 /
64 /
65 /
66 /
67 /
68 /
69 /
70 /
71 /
72 /
73 /
74 /
75 /
 
第63题    在手机中做本题