文章导读:在新的一年中,各位网友都进入紧张的学习或是工作阶段。网学的各位小编整理了JAVA- java应用程序安全分析研究 的相关内容供大家参考,祝大家在新的一年里工作和学习顺利!
随着网络的普及和发展,Web应用程序已经成为攻击的重要目标之一,黑客可以通过公共站点进入系统或数据库实施攻击。而在已发现的应用程序漏洞中,一半左右缘于缺乏对用户输入数据的有效验证。在这类攻击中,被广泛使用的技术是跨网站程序(cross-site scripting,CSS)和SQL注入(SQL injection)。对于这类攻击的防范,一个简单的策略就是对所有用户输入的数据都进行验证,关键是如何在程序使用这些数据之前找出它们并进行验证。编译技术将帮助我们进行应用程序的静态分析,在事前就将代码漏洞找出来,特别是程序中变量的指向信息是安全分析的基础。别名分析问题已经存在很久,文献至提出了各种不同的方法,主要分为上下文敏感和上下文不敏感。本文研究了一种基于数据库技术的别名分析方法,特定的应用程序安全分析需要的指向信息可以直接从数据库中查询。本文所属栏目http://myeducs.cn/java/
2基于数据库技术的别名分析早在1989年,Ullman就提出了将编译阶段的数据流分析问题转化为数据库查询问题处理[5]。这种方法的基本思想是被分析程序和上下文信息都以关系形式存储在数据库中,使用数据库查询语言存取和分析数据。把Java程序中别名相关语句统一模型化为四种:allocation型v=new Object();simple assignment型v1=v2;field store型v1·f=v2;field load型v2=v1·f。其中v,v1,v2,v1·f都是指向堆中对象的变量。堆中动态生成的对象用生成语句的位置表示。方法调用时形实参的结合转换为形实参之间简单的赋值语句。关系(relation)是n维属性组成的元组集合,每个属性的所有值构成的集合称为该属性的域(domain),表达式为R(x1,…,xn)真,当且仅当(x1,…,xn)在关系R中。相反,表达式﹁R(x1,…,xn)为真,当且仅当(x1,…,xn)不在关系R中。一个Datalog程序是形如E0:-E1,…,Ek的规则(rule)集合,规则的含义是要使E0为真当且仅当E1,…,Ek都为真[5]。针对统一化的四种别名相关语句,我们设定如下的域和关系:域。V:程序变量;H:堆对象;F:对象中的变量域。(本论文由网学http://myeducs.cn 整理提供,如需转载,请注明出处或联系我们的客服人员)