论文部分内容阅读
[摘 要]随着社会的发展,科技的进步,软件成为我们生活必不可少的一种工具,并且并行程序逐渐成为主流,软件测试的发展也倾向于开发并行方面的应用程序的研究,并行程序是有很多个独立的线程,线程非常复杂,并且有不确定的交互关系,让并行程序增加了自动化测试的难度,使多线程之间交互关系和并行程序的错误算法成为现代程序员值得研究的课题,这又是现在软件中最薄弱的环节。一般静态测试是通过分析语法、结构、方法语句、接口等源程序进行待测程序检测。通过源程序可以对结构分析、流分析来检测整个程序的漏洞。与动态测试相比,静态测试的这种方法更有效快速查找不足之处。
[关键词]Java程序;静态分析;安全性测试
中图分类号:TP311.52 文献标识码:A 文章编号:1009-914X(2015)38-0380-01
随着计算机科技的发展,电脑软件已经渗透到了我们每个领域,包括军事、航天、金融等,随着很多软件的发展也出现了很多人为的重大事故,其中最严重的是电脑病毒入侵,软件安全性受到很多人的重视。处理器速度也越来越快通过每年制作的超级计算机来看,速度是成倍上涨,家庭电脑也从单核处理器发展到多核处理器,随着硬件配置的提高,软件的代码规模也越来越大,越来越向模块化软件工程发展,这使得并行程序动态测试也相应得到发展,通过多次相同的测试在不同的时间内运行分析每次运行的结果安全性问题降到最低。静态测试是在源代码语法、结构、方法语句、接口来进行分析待测程序的正确性,通过源代码的结构性分析来进行查找程序的漏洞,使之比动态效率更高,在国内外静态分析方法已取得了很多成果,并且形成了很多种关于静态方法的分析。
一 通过安全性规则进行对库设计
安全性测试框架是通过核心模块的安全性规则库进行设计,安全性测试可分为安全功能测试和安全漏洞测试,通过这两方面的测试可以在软件的生命周期内提高系统的安全性,从而降低软件所控制的软件和硬件系统造成的风险。
安全性规则是对安全性测试的扩展,通过用户输入软件应用领域相关的安全性策略形成安全性规则,存入到安全性规则库在测试的时候通过调用安全库中的规则进行对软件安全的检查,安全性规则可以分为三大类规则,分别是表达式规则、语句规则、方法规则。
安全性规则库的逻辑性结构有四种实体,分别是安全性规则、分险等级、解决方案和软件应用程序。通过整个安全性规则库判断源代码是否与安全性规则一一对应,用风险等级表示安全性规则的危险程度,通过相应的查看应用领域的信息。
通过安全系规则库可以更好的保存安全性漏洞分析引擎中的安全性规则,安全性规则是安全测试的重要部分。通过安全性策略可以记录安全性规则并存入到规则库中可以通过多次测试完善每个领域的安全性。通过相应的用户规则可以实现规则池的管理模块,让安全性规则存入到规则池中,通过相应的查询命令和储存命令对其调用。
一般安全性规则库存放在XML文件储存,XML具有语法简单和树形结构数据分析能力,但XML也存在不可避免的缺点。通过XML文件储存和管理使得数据库更加种类繁多,并且数据关系更加复杂。
二 程序中间表示
程序中间表示是静态分析的一种方法,很多静态分析算法都是基于程序中间表示,例如Java文件编译之后转化成bytecode文件 ,它使得程序变得非常简单,同时也丢失了很多源代码信息,使得在此基础上并行相关算法增加难度。
依赖分析是静态分析中另一种分析方法,通过两条语句中间的有序约束关系解析程序语句的内在联系,查找漏洞并进行检测。控制依赖表示是通过程序的结构进行对语句中使用的值如变量常量对象等。通过一个变量在一个程序内进行定义能够让另一个程序使用其变量,通过这种静态分析,可以提供数据的依赖级别,达到有效的利用。随着多核处理器的出现并行机制运用在编程中更加广泛,Java就通过Thread类来进行并行机制 。以前并没有添加多线程特性,仅仅是把多线程当作一种方法,没有SDG图的概念,使整个语言扩展性差,现在提出了系统依赖图的概念,让面向对象语言支持并行机制,提高了Java语言多线程特性。程序依赖图简称PGD,是通过一种图形表示,方法依赖子图是语句上一级子图就是程序中的单个方法,如果存在很多条return语句就会存在很多个出口节点,就会出现控制依赖概念不严谨。类依赖子图是方法依赖子图的上一级子图,通过public、protected、private 标记可以共享和限制类的访问。如果子类的方法存在父类中就需要用extends连接。
对象的多态表示是类依赖子图的重要方式,通过对语句子图存在的对象使用可以对每个对象流进行分析,判断出该对象的实际类型,然后充实语句中对象的使用信息。接口和类处于平级状态,一个子类存在着一个节点,通过接口的抽象方法跟接口方法连接,一个类连接了接口就要实现该接口的方法。多线程是面向多线程系统的依赖图特有的结构,这种结构跟类和接口并不是包含关系,也不处于平级的状态,每个线程都存在入口节点,它是一个实体对象,通过子类依赖方法对该线程对象进行控制,若线程中存在着start? 方法,线程就会跟另一个新建的线程相连接。
漏洞报告器是面向用户的接口,它是通过分析调度器进行查找漏洞数据并进行整理和重新组合,展示给用户,采用模块化的设计实现漏洞报告器能够由分析调度器根据用户的需求进行对漏洞的排查。
系统管理主要是方便测试框架对各项信息进行分类管理,,目前我们通常用的是STSC测试框架,这种管理模块是由模块管理、插件管理、测试项目信息管理、系統信息配置管理组成。
结语
由此可知,通过对Java程序的研究,Java安全性是非常重要的,由于现在编程技术参差不齐,很多漏洞都会因为程序员的疏忽而存在与系统中。为了让代码的安全性提高,软件开发人员必须有并行程序经验,和相关的安全性知识,由于现在企业开发的某些功能模块是外包给其他公司,可能会导致系统模块安全性出现问题,甚至有些漏洞会精心的隐藏起来,很难进行测试和排查,造成企业内部机密信息泄漏。
参考文献
[1]金大海,宫云战,杨朝红等.运行时异常对软件静态测试的影响研究[J].计算机学报,2011,34(6).
[2]李必信,李宣东,郑国梁.一种系统依赖图的面向对象扩充方案[J].软件学报.2011,12(2).
[关键词]Java程序;静态分析;安全性测试
中图分类号:TP311.52 文献标识码:A 文章编号:1009-914X(2015)38-0380-01
随着计算机科技的发展,电脑软件已经渗透到了我们每个领域,包括军事、航天、金融等,随着很多软件的发展也出现了很多人为的重大事故,其中最严重的是电脑病毒入侵,软件安全性受到很多人的重视。处理器速度也越来越快通过每年制作的超级计算机来看,速度是成倍上涨,家庭电脑也从单核处理器发展到多核处理器,随着硬件配置的提高,软件的代码规模也越来越大,越来越向模块化软件工程发展,这使得并行程序动态测试也相应得到发展,通过多次相同的测试在不同的时间内运行分析每次运行的结果安全性问题降到最低。静态测试是在源代码语法、结构、方法语句、接口来进行分析待测程序的正确性,通过源代码的结构性分析来进行查找程序的漏洞,使之比动态效率更高,在国内外静态分析方法已取得了很多成果,并且形成了很多种关于静态方法的分析。
一 通过安全性规则进行对库设计
安全性测试框架是通过核心模块的安全性规则库进行设计,安全性测试可分为安全功能测试和安全漏洞测试,通过这两方面的测试可以在软件的生命周期内提高系统的安全性,从而降低软件所控制的软件和硬件系统造成的风险。
安全性规则是对安全性测试的扩展,通过用户输入软件应用领域相关的安全性策略形成安全性规则,存入到安全性规则库在测试的时候通过调用安全库中的规则进行对软件安全的检查,安全性规则可以分为三大类规则,分别是表达式规则、语句规则、方法规则。
安全性规则库的逻辑性结构有四种实体,分别是安全性规则、分险等级、解决方案和软件应用程序。通过整个安全性规则库判断源代码是否与安全性规则一一对应,用风险等级表示安全性规则的危险程度,通过相应的查看应用领域的信息。
通过安全系规则库可以更好的保存安全性漏洞分析引擎中的安全性规则,安全性规则是安全测试的重要部分。通过安全性策略可以记录安全性规则并存入到规则库中可以通过多次测试完善每个领域的安全性。通过相应的用户规则可以实现规则池的管理模块,让安全性规则存入到规则池中,通过相应的查询命令和储存命令对其调用。
一般安全性规则库存放在XML文件储存,XML具有语法简单和树形结构数据分析能力,但XML也存在不可避免的缺点。通过XML文件储存和管理使得数据库更加种类繁多,并且数据关系更加复杂。
二 程序中间表示
程序中间表示是静态分析的一种方法,很多静态分析算法都是基于程序中间表示,例如Java文件编译之后转化成bytecode文件 ,它使得程序变得非常简单,同时也丢失了很多源代码信息,使得在此基础上并行相关算法增加难度。
依赖分析是静态分析中另一种分析方法,通过两条语句中间的有序约束关系解析程序语句的内在联系,查找漏洞并进行检测。控制依赖表示是通过程序的结构进行对语句中使用的值如变量常量对象等。通过一个变量在一个程序内进行定义能够让另一个程序使用其变量,通过这种静态分析,可以提供数据的依赖级别,达到有效的利用。随着多核处理器的出现并行机制运用在编程中更加广泛,Java就通过Thread类来进行并行机制 。以前并没有添加多线程特性,仅仅是把多线程当作一种方法,没有SDG图的概念,使整个语言扩展性差,现在提出了系统依赖图的概念,让面向对象语言支持并行机制,提高了Java语言多线程特性。程序依赖图简称PGD,是通过一种图形表示,方法依赖子图是语句上一级子图就是程序中的单个方法,如果存在很多条return语句就会存在很多个出口节点,就会出现控制依赖概念不严谨。类依赖子图是方法依赖子图的上一级子图,通过public、protected、private 标记可以共享和限制类的访问。如果子类的方法存在父类中就需要用extends连接。
对象的多态表示是类依赖子图的重要方式,通过对语句子图存在的对象使用可以对每个对象流进行分析,判断出该对象的实际类型,然后充实语句中对象的使用信息。接口和类处于平级状态,一个子类存在着一个节点,通过接口的抽象方法跟接口方法连接,一个类连接了接口就要实现该接口的方法。多线程是面向多线程系统的依赖图特有的结构,这种结构跟类和接口并不是包含关系,也不处于平级的状态,每个线程都存在入口节点,它是一个实体对象,通过子类依赖方法对该线程对象进行控制,若线程中存在着start? 方法,线程就会跟另一个新建的线程相连接。
漏洞报告器是面向用户的接口,它是通过分析调度器进行查找漏洞数据并进行整理和重新组合,展示给用户,采用模块化的设计实现漏洞报告器能够由分析调度器根据用户的需求进行对漏洞的排查。
系统管理主要是方便测试框架对各项信息进行分类管理,,目前我们通常用的是STSC测试框架,这种管理模块是由模块管理、插件管理、测试项目信息管理、系統信息配置管理组成。
结语
由此可知,通过对Java程序的研究,Java安全性是非常重要的,由于现在编程技术参差不齐,很多漏洞都会因为程序员的疏忽而存在与系统中。为了让代码的安全性提高,软件开发人员必须有并行程序经验,和相关的安全性知识,由于现在企业开发的某些功能模块是外包给其他公司,可能会导致系统模块安全性出现问题,甚至有些漏洞会精心的隐藏起来,很难进行测试和排查,造成企业内部机密信息泄漏。
参考文献
[1]金大海,宫云战,杨朝红等.运行时异常对软件静态测试的影响研究[J].计算机学报,2011,34(6).
[2]李必信,李宣东,郑国梁.一种系统依赖图的面向对象扩充方案[J].软件学报.2011,12(2).