[发明专利]一种PHP语言Web应用中不可信变量静态检测方法无效
| 申请号: | 201010226460.8 | 申请日: | 2010-07-14 |
| 公开(公告)号: | CN101916340A | 公开(公告)日: | 2010-12-15 |
| 发明(设计)人: | 顾庆;彭树深;陈晓安;陈道蓄 | 申请(专利权)人: | 南京大学 |
| 主分类号: | G06F21/00 | 分类号: | G06F21/00 |
| 代理公司: | 江苏圣典律师事务所 32237 | 代理人: | 黄振华 |
| 地址: | 210093 江苏省*** | 国省代码: | 江苏;32 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 php 语言 web 应用 不可信 变量 静态 检测 方法 | ||
1.一种PHP语言Web应用中不可信变量的静态检测方法,其特征在于包括以下步骤:
1)识别PHP Web应用的所有入口文件;
2)由入口文件出发,析取PHP Web应用的每个功能模块的PHP代码,同时避开HTML代码的干扰,通过代码中的包含(include/require)语句采用迭代方法整合所有相关的PHP文件和代码;
3)以整合后的每一个PHP Web应用的功能模块为单位,采用静态分析的方法识别其中的不可信变量;
4)汇总所有模块的解析结果,每个模块的解析结果都是一个不可信变量的集合,汇总时取各集合的并集并生成报告,报告中对每一个不可信变量都记录其所属的PHP文件和文件中的具体位置。
2.根据权利要求1所述的PHP语言Web应用中不可信变量的静态检测方法,其特征在于步骤1)的入口文件识别过程为:从Web应用主目录开始,遍历目录下所有文件项构成集合W;针对W中的每一个文件项,如果文件项是目录,则遍历该目录下所有文件项并添加到集合W中;如果文件项是一个文件,且是PHP文件,则判定该文件是否具有入口文件特征:如果是入口文件则将其添加到入口文件集合中;否则忽略该文件。遍历和识别所有文件项直到集合W为空,最后得到Web应用的入口文件集合。
3.根据权利要求1或2所述的PHP语言Web应用中不可信变量的静态检测方法,其特征在于步骤2)的功能模块整合过程为:针对一个入口文件f,首先获取其中的PHP代码构成代码集Cf;然后初始化文件集合I,用于记录已包含的文件;接下来获取代码集Cf中的所有包含语句并组成集合S;针对集合S中的每一条包含语句s,首先确定语句s中引用的文件is;如果引用的文件is没有出现在初始化文件集合I中,或者包含指令不是一次包含,则读入文件is,析取其中的PHP代码,用以替换代码集Cf中包含语句s的出现位置;接下来将文件is记录入集合初始化文件I,并将其PHP代码中可能出现的包含语句再添加到集合S中;如果语句s是一次包含,且文件is已在初始化文件集合I中,则语句s被忽略,代码集Cf中对应位置替换为空串;按此循环直到集合S中所有的包含语句都被处理且不再有新的包含语句加入;处理完毕后得到整合后的代码集Cf代表一个完整的功能模块。
4.根据权利要求3所述的PHP语言Web应用中不可信变量的静态检测方法,其特征在于步骤3)的不可信变量的识别过程为:首先将所有变量归为三种类型:类变量(class_var)、已定义变量(defined_var)、以及不可信变量(untrusted_var),然后基于整合后的每一个PHP Web应用的功能模块,每次析取代码集Cf中的三个词,根据对词的语义识别确定该代码集(功能模块)中的不可信变量。
5.根据权利要求4所述的PHP语言Web应用中不可信变量的静态检测方法,其特征在于词的语义识别及不可信变量的确定分成5种情况,包括:
情况1.“$”标示的变量名,说明是一个变量;
情况2.“new”运算符,紧跟其后的词是一个类变量(class_var);
情况3.由“(”符号标示的函数名,说明是一个函数调用,则进入函数体获取所有全局性变量;
情况4.由引号括起的字符串,则在字符串中获取所有全局性变量;
情况5.“list”关键字,将其中出现的所有变量视为已定义变量;
其中,对于情况1、3和4,确定是否为不可信变量的步骤是:如果该变量是第一次出现,且为定义性出现,则变量是已定义变量(defined_var),置入已定义变量集合,并存储变量的变量作用域;如果第一次出现是使用性出现,则该变量是不可信变量(untrusted_var)。
6.根据权利要求5的PHP语言Web应用中不可信变量的静态检测方法,其特征在于判定变量是否第一次出现步骤是:将该变量匹配已定义变量集合,如果能够匹配且在作用域内,则忽略该变量;如果不能匹配或已在作用域之外,则该变量是第一次出现。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京大学,未经南京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201010226460.8/1.html,转载请声明来源钻瓜专利网。





