基于动静态分离模板的客户端网页篡改检测方法与流程

文档序号:14725718发布日期:2018-06-19 06:55阅读:237来源:国知局

本发明属于网络安全技术领域,具体涉及一种基于动静态分离模板的客户端网页篡改检测方法。



背景技术:

近年来,互联网行业蓬勃发展,网络已经成为人们获取信息的主要方式,随着各种新网站的出现,网络信息成指数级增长,然而伴随出现的安全问题也愈发严重。网页篡改是常见的网络安全问题,恶意攻击者通过篡改网页内容,植入色情、博彩、商广等内容达到利用合法网页传播恶意信息、诱导用户输入下载数据等目的。网页篡改检测即是检测网页是否被篡改,及时有效的帮助用户规避风险的一种方法。

目前,网页篡改检测的方法多数是基于服务器端部署的检测机制,此种方式资源开销大,部署复杂,受制条件多。虽然部分网页篡改检测的方法是基于客户端部署的检测机制,但均是使用特征库匹配或水印等方式做检测,无法支持内容部分可变的动态网页检测。



技术实现要素:

本发明是为了解决上述问题而进行的,目的在于提供一种在客户端检测网页篡改,使得资源开销低、部署简易、不受环境条件限制、适配性强的基于动静态分离模板的客户端网页篡改检测方法。

本发明提供了一种基于动静态分离模板的客户端网页篡改检测方法,其特征在于,包括以下步骤:

步骤1,抓取同一URL在不同时间段的网页源码作为训练数据集;

步骤2,对所述训练数据集进行预处理:将所述训练数据集中的每份网页源码解析为Dom Tree结构,以Dom Tree的每个标签为处理单元,将处理单元格式化,并将每个Dom Tree中的格式化的处理单元序列化为有序列表的形式,其中,所述格式化的处理单元中至少包括textnum、tag、hash、depth、sig和动态区域统计特征信息,textnum为处理单元文本数量、tag为标签名称、hash为处理单元的哈希值、deph为处理单元所在的深度值、sig表示处理单元是否为动态区域起始标识节点;

步骤3,生成模板:提取所有预处理过的网页源码中最长公共子序列,根据所述最长公共子序列基于预定规则识别出静态区域、动态区域和动态区域起始标识节点,并统计动态区域统计特征信息,提取静态区域并根据静态区域中每个处理单元是否为动态区域起始节点对每个处理单元的sig值进行更新,根据统计出的动态区域特征信息对属于动态区域起始标识节点的处理单元的动态区域统计信息进行更新,将更新后的序列表作为模板;

步骤4,抓取待测试的与步骤1中相同的URL的网页源码;

步骤5,对步骤4中的网页源码进行预处理:预处理过程与步骤2的预处理过程相同,其中,格式化的处理单元中至少包括xpath、textnum、tag、hash、deph、sig和动态区域统计特征信息,xpath为每个处理单元的路径表达式,textnum为处理单元文本数量、tag为标签名称、hash为处理单元的哈希值、depth为处理单元所在的深度值、sig用于标识动静态区域;

步骤6,提取步骤5中预处理的网页源码和所述模板的最长公共子序列,根据最长公共子序列基于预定规则识别出该两个序列表的静态区域、动态区域和动态区域起始标识节点,并统计各动态区域特征统计信息;

步骤7,提取步骤6中静态区域并根据该静态区域中每个处理单元是否为动态区域起始节点对每个处理单元的sig值进行加1或加0,根据静态区域中处理单元的sig值来判断与其对应的动态区域是静态篡改点或是原始动态区域,若识别出模板中的动态区域起始标识节点和/或结束节点被篡改,则需要对模板中该动态区域进行动态区域扩展,并更新模板中动态区域统计信息,无论步骤6中的静态区域中对应的节点的sig值的大小,扩展的动态区域对应的步骤6中提取的动态区域均作为原始动态区域,并输出被篡改的静态区域数据;

步骤8,根据原始动态区域和原始动态区域的动态区域特征统计信息、对应的模板中的动态区域和该动态区域的动态区域特征统计信息基于预定规则检测提取的原始动态区域是否被篡改;

步骤9,输出被篡改的动态区域数据;

步骤10,根据待测试的网页源码有序列表中各节点的xpath将被篡改的静态区域数据和动态区域数据在待测网页上展示。

进一步,在本发明提供的基于动静态分离模板的客户端网页篡改检测方法中,还可以具有这样的特征:其中,步骤1和步骤4中,通过网络抓取引擎爬取URL的网页源码。

进一步,在本发明提供的基于动静态分离模板的客户端网页篡改检测方法中,还可以具有这样的特征:在训练模板时采用循环处理或并行处理的方式。

进一步,在本发明提供的基于动静态分离模板的客户端网页篡改检测方法中,还可以具有这样的特征:其中,步骤3中,在训练模板时,处理单元的参数sig的值是递增操作,在得到模板时,还需将训练得到的模板做格式化处理:将模板中处理单元的参数sig大于1的节点重新赋值为1。

进一步,在本发明提供的基于动静态分离模板的客户端网页篡改检测方法中,还可以具有这样的特征:其中,动态区域特征统计信息至少包含:tagmax、tagmin、textmax、以及textmin,tagmax为动态区域标签数量最大值,tagmin为动态区域标签数量最小值,textmax为动态区域文本数量最大值,textmin为动态区域文本数量最小值。

进一步,在本发明提供的基于动静态分离模板的客户端网页篡改检测方法中,还可以具有这样的特征:其中,哈希值是根据每个处理单元所在的深度值depth、标签名称tag、属性值attributes和文本内容text基于预定规则生成。

进一步,在本发明提供的基于动静态分离模板的客户端网页篡改检测方法中,还可以具有这样的特征:其中,步骤3和步骤6中,提取最长公共子序列的方法包括基于贪心的LCS算法、基于动态规划的LCS算法。

进一步,在本发明提供的基于动静态分离模板的客户端网页篡改检测方法中,还可以具有这样的特征:其中,采用指针遍历的方式根据所述最长公共子序列识别出静态区域、动态区域和动态区域起始标识节点,并统计动态区域统计特征信息。

进一步,在本发明提供的基于动静态分离模板的客户端网页篡改检测方法中,还可以具有这样的特征:其中,步骤9中检测提取的原始动态区域是否被篡改时采用的方法包括:基于启发式的检测规则或基于敏感词的检测方法。

本发明具有如下优点:

根据本发明所涉及的基于动静态分离模板的客户端网页篡改检测方法,首先抓取同一URL在不同时间段下的网页源码,并对每份网页源码进行预处理将其处理成有序列表,并将所有有序列表进行训练得到静态区域、动态区域和动态区域起始标识节点,并统计动态区域统计特征信息,提取静态区域,并将动态区域统计特征信息赋值给动态区域起始标识节点后作为动静态分离模板,模板中节点的sig值表示该节点是否为动态区域起始标识节点,检测时,抓取待测的同一URL的网页源码,将其预处理成有序列表,然后将待检测的有序列表与模板进行比对,得到待检测的有序列表与模板的静态区域、动态区域和动态区域起始标识节点,根据静态区域中处理单元的sig值来判断与其对应的动态区域是静态篡改点或是原始动态区域,若有动态区域起始标识节点和/或结束节点发生篡改的情况,则需要对模板中相应的动态区域进行扩展,重新统计扩展后的动态区域的统计特征信息并进行更新,输出被篡改的静态区域数据,对原始动态区域进行动态区域篡改检测,输出被篡改的动态区域数据,最后根据xpath将静态区域篡改数据和动态区域篡改数据在待测网页上展示,本发明的检测方法在客户端对网页篡改进行检测,具有资源开销低、部署简易、不受环境条件限制、适配性强等优点,通过自学习生成动静态分离模板,对动态区域和静态区域分别采用不同的检测方法进行篡改检测,解决了传统网页篡改检测无法检测动态网页被篡改的问题,并且可提高网页篡改整体检测准确性。

附图说明

图1是本发明的基于动静态分离模板的客户端网页篡改检测方法的流程图;

图2为本发明的基于动静态分离模板的客户端网页篡改检测方法的逻辑图。

图3是本发明的动静态分离及动态区域特征统计算法的流程图。

具体实施方式

为了使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,以下实施例结合附图对本发明的基于动静态分离模板的客户端网页篡改检测方法作具体阐述。

基于动静态分离模板的客户端网页篡改检测方法能够在客户端检测网页是否被篡改。本发明的基于动静态分离模板的客户端网页篡改检测方法在对网页进行检测时对一个检测的URL生成一个模板,URL全称为Uniform Resource Locator,即统一资源定位符,当对多个URL进行检测时,需要对每个URL生成一个模板,每个模板对相应的URL进行检测。

如图1、图2所示,基于动静态分离模板的客户端网页篡改检测方法包含以下步骤:

首先是数据训练阶段,用于生成模型。包括步骤S1至S3。

步骤S1,抓取同一URL在不同时间段的网页源码作为训练数据集。该步骤为训练数据的收集,在本实施例中,通过网络抓取引擎定时爬取URL的网页源码多份作为训练数据集。

步骤S2,对训练数据集进行预处理:将训练数据集中的每份网页源码解析为Dom Tree结构,以Dom Tree的每个标签为处理单元,即每个处理单元为一个节点,将处理单元格式化,并将每个Dom Tree中的格式化的处理单元序列化为有序列表的形式,即每份网页源码经过预处理后变为一个有序列表,如:[A,B,C,D,……],列表中每一个元素代表一个格式化的处理单元。

其中,格式化的处理单元中至少包括textnum、tag、hash、depth、sig和动态区域统计特征信息,textnum为处理单元文本数量、tag为标签名称、hash为处理单元的哈希值、depth为处理单元所在的深度值、sig表示处理单元是否为动态区域起始标识节点。在本实施例中,sig为0则表示该处理单元为静态节点,sig为1则表示该处理单元为动态区域起始节点。

在本实施例中,采用先序遍历的方式将每个Dom Tree中的格式化的处理单元序列化为有序列表的形式。

在本实施例中,哈希值hash是根据每个处理单元所在的深度值depth、标签名称tag、属性值attributes和文本内容text基于预定规则生成。

在本实施例中,动态区域特征统计信息至少包含:tagmax、tagmin、textmax以及textmin,tagmax为动态区域标签数量最大值,tagmin为动态区域标签数量最小值,textmax为动态区域文本数量最大值,textmin为动态区域文本数量最小值。

在本实施例中,将处理单元格式化是将处理单元转换成预定的格式,每个处理单元的输出格式为:

[tagmax.tagmin.textmax.textmin.textnum.tag.hash.depth.sig]

其中,tagmax、tagmin、textmax、textmin的初始值均默认为-1,sig的初始值默认为0,textnum、tag、hash和depth则是根据该处理单元的实际情况进行取值。

在本实施例中,步骤1中使用网络爬虫引擎爬取同一URL下的网页源码多份,并根据需要使用动态渲染引擎解析网页源码生成DomTree结构。

步骤S3,生成模板:提取所有预处理过的网页源码中最长公共子序列,根据所述最长公共子序列识别出静态区域、动态区域和动态区域起始标识节点,并统计动态区域统计特征信息,提取静态区域并根据静态区域中每个处理单元是否为动态区域起始节点对每个处理单元的sig值进行更新,根据统计出的动态区域特征信息对属于动态区域起始标识节点的处理单元的动态区域统计信息进行更新,将更新后的序列表作为模板。

静态区域即网页中内容不会改变的区域,动态区域即网页中内容会根据场景做变动的区域。动态区域起始标识节点即动态区域起始节点的前一个节点,每个节点表示一个处理单元。

在本实施例中,在训练模板时采用循环处理或并行处理的方式。

在本实施例中,提取最长公共子序列的方法包括基于贪心的LCS算法、基于动态规划的LCS算法。

在本实施例中,提取静态区域、动态区域起始标识节点,统计动态区域特征信息采用指针遍历的方式,采用指针便利的方式,避免了常规处理方式需要循环遍历两个网页数据,时间复杂度为O(m*n),m为A网页格式化数据列表长度,n为B网页格式化数据列表长度,由于网页源码中标签数量通常很大,导致格式化后m、n都会很大,传统方法时间复杂度巨大,无法在实际产品中应用,本专利使用指针遍历方式,使得算法时间复杂度降低为0(p),其中,p=max(m,n)。

如图3所示,采用指针遍历的具体算法流程如下:

步骤201:算法入参为最长公共子序列索引LCSIndex,网页A格式化数据链表linkedListA,网页B格式化数据链表linkedListB。其中,LCSIndex包含公共子序列在linkedListA和linkedListB中的各自索引。

步骤202:构建linkedListA链表头指针tsAIndex,构建linkedListB链表头指针tsBIndex

步骤203:初始化标识位,用于初始化算法的一些变量信息,如初始化用于判断当前是否处于动态区域起始点标识变量changeNodeTag,等。

步骤204:判断若tsAIndex在LCSIndex中并且tsBIndex在LCSIndex中时,执行步骤205,否则执行步骤212。满足判断条件说明两个列表对应指针内数据为公共节点,接下来需要进一步判断此公共节点是静态节点还是动态区域起始标识节点。

步骤205:执行到此步时,节点为公共节点将会被输出,但需进一步判断此节点具体是静态节点还是动态区域起始节点,若是动态区域起始节点还需更新此节点的特征统计信息值、sig标识值。并且,在训练阶段输出值中不会包含xpath,而在检测阶段输出值中包含xpath。因此,首先对待输出的节点做格式处理,保存原始节点信息storageNode,同时保存storageNode中sig的前缀信息storageNodePrefix,sig信息dynamic_area_tag。

步骤206:判断若tsAIndex+1在LCSIndex中或tsBIndex+1在LCSIndex中,则执行步骤207,否则执行步骤223。满足判断条件则认为此节点为动态区域起始位置标识。动态区域起始标识节点具体指动态区域起始单元的前一个单元,如有序表T=[A,B,C,D,...],假设B为动态区域起始标识单元,则表示B和C之前区域动态区域,但不包含B和C本身。不满足条件则认为此节点为静态区域节点。

步骤207:修改节点结构中sig标识,将其设置为动态区域起始位置标识节点。并将此节点存入tempalte。

步骤208:判断当前是否处于动态区域开始处,即判断标识变量changeNodeTag为True,若符合条件,执行步骤209,否则执行步骤219。符合条件表示当前节点处于动态区域开始处,不符合条件则表示当前节点处于前一个动态区域结束处,后一个动态区域开始处。

步骤209:提取tsAIndex、tsBIndex指针内容和dynamic_area_tag存入startNodePair中用于后续动态区域特征信息统计使用。存储startNode在template中索引template_startnode_index,用于后续更新动态区域起始表示节点的统计信息tagmax、tagmin、textmax、textmin。

步骤210:置标识变量changeNodeTag=False。

步骤211:判断循环是否结束,即最长网页列表对应指针是否走到尾处。若符合条件执行步骤232,否则执行步骤204。

步骤212:判断若tsAIndex在LCSIndex中并且tsBIndex不在LCSIndex中,则执行步骤213,否则执行步骤215。符合条件表示tsBIndex指针节点属于动态区域。

步骤213:收集动态区域数据linkedListB[tsBIndex],用于后续统计动态区域特征信息。

步骤214:linkedListB链表的指针tsBIndex做后移操作。

步骤215:判断若tsAIndex不在LCSIndex中并且tsBIndex在LCSIndex中,若符合条件执行步骤216,若不符合条件执行218。符合条件表示tsAIndex指针节点归属于动态区域,不符合条件表示tsAIndex、tsBIndex指针节点都归属于动态区域。

步骤216:收集动态区域数据linkedListA[tsAIndex],用于后续统计动态区域特征信息。

步骤217:linkedListA链表的指针tsAIndex做后移操作。

步骤218:收集动态区域数据linkedListA[tsAIndex]、linkedListB[tsBIndex],用于后续统计动态区域特征信息。

步骤219:统计动态区域特征。根据startNodePair和收集到的动态区域数据统计动态区域特征信息,具体特征信息包括但不限于标签数量、文本数量,并根据startNodePair中动态区域起始表示节点中保存的历史动态区域特征统计信息,计算新的特征统计信息,具体特征统计信息包括但不限于tagmax、tagmin、textmax、textmin等。

步骤220:根据步骤219的结果和原始动态区域起始标识节点startNode在template中的索引template_startnode_index更新startNode节点中的特征统计信息取值。

步骤221:将动态区域数据存储到changeNodeMap中,包括动态区域起始标识节点、动态区域结束标识节点、linkedListA对应的此动态区域数据、linkedListB对应的此动态区域数据。changeNodeMap用于在检测阶段输出动态区域数据、静态区域被篡改的数据(包括原始数据和篡改后数据)。

步骤222:提取tsAIndex、tsBIndex指针内容和dynamic_area_tag存入startNodePair,存储动态区域起始标识节点startNode在template中的索引template_startnode_index。此步操作是由于此时节点既是前一个动态区域结束标识节点,又是后一个动态区域起始标识节点。对于起始标识节点需保存此节点在template中的索引,用于后续更新动态区域特征统计信息值。

步骤223:判断节点结构中sig标识是否大于1,即Dynamic_area_tag>1,若符合条件执行步骤224,否则执行步骤227。符合条件表明此节点已是动态区域起始标识节点,对于训练阶段表示此节点在上一轮计算时已被识别为动态区域起始节点,对于检测阶段表示此节点是模板中的动态区域起始标识节点。当满足条件时,仅需进一步做动态区域特征信息值统计更新。

步骤224:统计动态区域特征信息。具体参见步骤219的说明。

步骤225:对待输出的节点做格式化处理。用于在检测阶段,存入到changeNodeMap中的动态区域标识节点需要携带xpath信息。

步骤226:动态区域数据存储到changeNodeMap。在检测阶段此时场景对应于待检测网页中动态区域内数据为空情况。

步骤227:将此节点元素信息存入模板template中。

步骤228:判断标识变量changNodeTag为False,若符合条件执行步骤229,否则执行步骤211。符合条件则表示此节点为动态区域标识结束节点,后续需做动态区域特征值统计更新等操作。

步骤229:统计动态区域特征信息。具体参见步骤219的说明。

步骤230:根据步骤229的结果和原始动态区域起始标识节点startNode在template中的索引template_startnode_index更新startNode节点中的统计信息取值。

步骤231:将动态区域数据存储到changeNodeMap中,包括动态区域起始标识节点、动态区域结束标识节点、linkedListA对应的此动态区域数据、linkedListB对应的此动态区域数据。changeNodeMap用于在检测阶段输出动态区域数据、静态区域被篡改的数据(包括原始数据和篡改数据)。

步骤232:算法结束,输出模板信息template,动态区域信息changeNodeMap。

循环处理方式:

从训练数据集中任意选取两份经过预处理的网页源码,即有序列表,使用基于动态规划的LCS算法提取两个有序列表的最长公共子序列,即两个有序列表中相应的两个处理单元的hash值相同,将hash值相同的处理单元提取出来。比如:

有序列表1:[A1,B1,C1,D1,E1,F1,G1,H1],A1、B1、C1、D1、E1、F1、G1的hash值分别为1、2、3、4、5、6、7、8。

有序列表2:[A2,B2,C2,D2,E2,F2,G2,H2],A2、B2、C2、D2、E2、F2、G2的hash值分别为1、2、9、10、5、6、11、8。有序列表中A1对应与A2,B1对应与B2,……,G1对应与G2。因C1与C2的hash值不同,D1与D2的hash值不同,G1与G2的hash值不同,所以,有序列表1和有序列表2的最长公共子序列为[A,B,E,F,H]。

依据提取到的最长公共子序列,即公共节点回溯获得两个有序列表的动态区域和所有不同节点,并得到动态区域起始标识节点。两个有序列表的动态区域可以为多个,每个动态区域为从hash值不同的第一个处理单元到下一个hash值相同的处理单元之前的区域,例如有序列表1和有序列表2的动态区域有两个,分别为动态区域[C,D]和动态区域[G]。不同的节点即两个列表中相对应的两个处理单元的hash值不同,例如有序列表1和有序列表2的所有不同节点为C、D、G。静态区域即所有的两个hash值相同的节点,例如有序列表1和有序列表2的静态区域为[A,B,E,F,H]。C为动态区域[C,D]的起始节点,因此,B为该动态区域的动态区域起始标识节点;G为动态区域[G]的起始节点,因此,F为该动态区域的动态区域起始标识节点。

将统计每个动态区域的动态区域特征统计信息,在本实施例中,动态区域特征统计信息为:tagmax,tagmin,textmax,textmin。将统计的动态区域特征统计信息tagmax,tagmin,textmax和textmin的值赋值给对应的动态区域起始标识节点。以有序列表1和有序列表2为例,B为动态区域[C,D]的动态区域起始标识节点,统计动态区域[C,D]特征信息tagmax,tagmin,textmax和textmin的值,然后赋值给B,假如tagmax,tagmin,textmax和textmin的值分别为x1,x2,x3,x4,处理单元B初始值为[-1,-1,-1,-1,e,a,b,c,d,0],赋值后处理单元B为[x1,x2,x3,x4,e,a,b,c,d,0]。

对于提取的静态区域根据各节点是否为动态区域起始节点将各节点的sig进行赋值。例如:有序列表1和有序列表2的静态区域为[A,B,E,F,H],B、F为动态区域起始标识节点,B、F的sig均赋值为1,A、E、H的sig均赋值为0。

即模板为提取的静态区域,静态区域中的静态节点中sig加0,其它各元素的值不改变。静态区域中的动态区域起始标识节点中表示动态区域特征统计信息的值tagmax,tagmin,textmax和textmin更新,sig加1,其它值不改变。以静态节点A和动态区域起始节点B为例,A初始为[-1,-1,-1,-1,-1,a,b,c,d,0],赋值后A为[-1,-1,-1,-1,e,a,b,c,d,0],B初始为[-1,-1,-1,-1,-1,a,b,c,d,0],赋值后B为[x1,x2,x3,x4,e,a,b,c,d,1]。

将上述模板与训练数据集中其它有序列表重复上述过程得到下一模板,得到的新模板中静态区域中每个节点的sig值是以进行训练提取的模板的sig值为基础进行递增操作的。即在上一模板与训练数据集中其它有序列表训练下一模板时,对于提取的静态区域根据各节点是否为动态区域起始节点将各节点的sig进行递增赋值,即在上一模板的基础上中各对每个节点的sig值分别做加0或者加1操作。比如:以有序列表1和有序列表2训练出的模板为例,模板的有序列表为[A,B,E,F,H],各节点的sig值分别为0、1、0、1、0,训练集中有序列表3为[A2,B2,C2,D2,E2,F2,G2,H2],若模板与有序列表3提取的最长公共子序列为[A,E,F,H],则A、F为动态区域起始标识节点,则新训练的模板中A的sig值在以有序列表1和有序列表2训练出的模板的基础上加1,即新训练的模板中A的sig值变为1;新训练的模板中F的sig值在以有序列表1和有序列表2训练出的模板的基础上再加1,即新训练的模板中F的sig值变为2;新训练的模板中E、H在以有序列表1和有序列表2训练出的模板的基础上再加0,即新训练的模板中A、E、H的sig值变为0。并更新动态区域起始标识节点中表示动态区域特征统计信息的值。

依次对训练数据集中所有预处理的网页源码按照上述过程进行训练得到最终模板。最终模板为训练数据集中所有网页源码的静态区域。

模板训练也可以采用并行处理方式:同时选取多个网页提取多个网页的最长公共子序列,处理得到模板,具体处理过程与循环处理方式中两两有序列表处理过程相同。多个网页训练得到的模板再与多个网页训练的到的模板进行训练提取模板,生成最终模板。

在本实施例中,在得到最终模板后,由于训练模板时,模板中节点的sig值是递增操作的,因此模板中会出现节点的sig值大于1的情况,因此,需要对最终模板进行格式化处理,将最终模板中节点sig值大于1的值重新赋值为1。因此,模板中各节点中sig为0则表示该节点为静态节点,sig为1则表示该节点为动态区域起始标识节点。

至步骤S3,一个URL的动静态分离模板生成,如需检测多个不同的URL,则每个URL均按照步骤S1~步骤S3生成一个动静态分离模板。

然后是测试阶段,用于对待测试的URL进行检测,并将篡改结果进行输出。包括步骤S4至S9。

步骤S4,抓取待测试的与步骤1中相同的URL的网页源码。抓取方式与数据训练阶段抓取方式相同。

步骤S5,对步骤S4中抓取的网页源码进行预处理:预处理过程与步骤S2的预处理过程相同,其中,格式化的处理单元中至少包括xpath、textnum、tag、hash、deph、sig和动态区域统计特征信息,xpath为每个处理单元的路径表达式,textnum为处理单元文本数量、tag为标签名称、hash为处理单元的哈希值、depth为处理单元所在的深度值、sig用于标识动静态区域。

测试阶段抓取的网页源码预处理后,每个处理单元中包含的动态区域统计特征信息与数据训练阶段网页源码预处理后每个处理单元中包含的动态区域统计信息相同,在本实施例中均为:tagmax,tagmin,textmax,textmin。

测试阶段,待测网页源码的每个处理单元的输出格式为:

[xpath.tagmax.tagmin.textmax.textmin.textnum.tag.hash.depth.sig]

其中,tagmax、tagmin、textmax、textmin的初始值均默认为-1,sig的初始值默认为0,xpath、textnum、tag、hash和depth则是根据该处理单元的实际情况进行取值。即待测网页源码的每个处理单元初始值为[e,-1,-1,-1,-1,f,a,b,c,d,0]。

步骤S6,提取步骤S5中预处理的网页源码和数据训练阶段得到的模板的最长公共子序列,在本实施例中,提取最长公共子序列的方法包括基于贪心的LCS算法、基于动态规划的LCS算法。根据最长公共子序列基于预定规则识别出该两个序列表的静态区域、动态区域和动态区域起始标识节点,并统计各动态区域特征统计信息。在本实施例中,提取静态区域、动态区域起始标识节点,统计动态区域特征信息采用指针遍历的方式,具体算法与数据训练阶段相同。

步骤S7,提取步骤S6中静态区域并根据该静态区域中每个处理单元是否为动态区域起始节点对每个处理单元的sig值进行加1或加0,若处理单元为动态区域起始标识节点则sig值加1,若处理单元不是动态区域起始标识节点则sig值加0。根据静态区域中处理单元的sig值来判断与其对应的动态区域是静态篡改点或是原始动态区域。该静态区域中每个节点的sig值是以数据训练阶段提取的模板的sig值为基础进行递增操作的。数据训练阶段提取的模板中sig值为0的节点为静态节点,sig值为1的节点为动态区域起始标识节点,因此,若步骤S6中提取的静态区域中节点的sig值为1,则该节点与下一个相邻的节点之间的动态区域包含的节点为待测网页源码的静态篡改点,输出该静态篡改点;若步骤S6中提取的静态区域中节点的sig值为2,则该节点与下一个相邻的节点之间的动态区域为原始动态区域,对原始动态区域需要进行动态区域篡改检测。

若识别出模板中的动态区域起始标识节点和/或结束节点被篡改,则需要对模板中该动态区域进行动态区域扩展,并更新模板中动态区域统计信息,无论步骤6中的静态区域中对应的节点的sig值的大小,扩展的动态区域对应的步骤6中提取的动态区域均作为原始动态区域,并输出被篡改的静态区域数据。

输出的检测结果包括两大类,格式均为[(起始节点,结束节点),(原始数据,篡改后数据)]。

第一类为:被篡改的静态区域。即本步骤输出的被篡改的静态区域数据。

第二类为:被篡改的动态区域,此时输出格式中的原始数据为空。这是因为模板中存储的仅是静态区域数据,被篡改前的原始数据是无法获取展示的。即步骤S9输出的篡改数据。

做动态区域扩展目的是为了避免由于模板中动态区域起始标识节点和/或结束节点被篡改导致的待检测网页动态区域提取不准确的问题。

结束节点指模板中动态区域起始标识节点的下一个节点,动态区域结束后的第一个节点,例如:有序列表[A,B,C,D,E]各节点的sig值分别为0、0、1、0、0,C为动态区域起始标识节点,D为动态区域结束节点。原始动态区域为URL原本的动态区域,即训练得到的模板的动态区域。

例如:

情况一,模板中动态区域起始标识节点和/或结束节点均没有被篡改:模板有序列表为[A,B,C,D,E,F,G,H,L,M,N],该有序列表中每个节点的sig值分别为0、0、0、0、0、0、0、1、0、0、0,H为动态区域起始标识节点。待测网页源码的有序列表为[A,B,C,D,Z,F,G,H,I,J,K,L,M,N]。该两个有序列表中字母相同的节点hash值相同,该两个有序列表的最长公共子序列为[A,B,C,D,F,G,H,L,M,N],每个节点的sig值分别为0、0、0、1、0、0、2、0、0、0,节点D的sig值为1,因此,D,F之间的动态区域,即[E]为静态篡改区域;节点H的sig值为2,因此,H,L之间的动态区域为原始动态区域。

情况二,模板中动态区域起始标识节点被篡改:模板有序列表为[A,B,C,D,E],该有序列表中每个节点的sig值分别为0、0、1、0、0,C为模板的动态区域起始节点。待测网页源码的有序列表为[A,B,P,Q,R,D,E],该两个有序列表中字母相同的节点hash值相同,该两个有序列表的最长公共子序列为[A,B,D,E],B为动态区域起始节点,B的sig值为1,动态区域为B,D之间的区域,即[P,Q,R]。而模板中B、D之间的区域为[C]包含了一个动态区域起始节点,此种情况可以判定模板中的C节点被篡改为P节点,需将模板的C,D之间的动态区域进行扩展为B,D之间的动态区域,重新统计B,D之间的动态区域的特征信息并更新模板中对应的该动态区域特征统计信息(即B节点中的动态特征统计信息)。最长公共子序列为[A,B,D,E]中节点B的sig值为1,因此,根据sig值判断B,D之间的区域应为静态篡改区域,但是由于模板的动态区域起始节点C被篡改,静态篡改点与原始动态区域合并为一个区域,因此将B,D之间的动态区域作为原始动态区域。

情况三,模板中即是动态区域起始标识节点又是上一个动态区域的结束节点被篡改:模板有序列表为[A,B,C,D,E,F,G],该有序列表中每个节点的sig值分别为0、0、1、1、0、0、0,模板动态区域为两个C,D之间的动态区域和D,E之间的动态区域。待测网页源码的有序列表为[A,B,C,X,Q,P,J,Z,E,F,G],该两个有序列表中字母相同的节点hash值相同,该两个有序列表的最长公共子序列为[A,B,C,E,F,G],动态区域为[X,Q,P,J,Z],此种情况无法判定模板中的D节点被篡改成哪个节点,无法准确提取与模板中C,D之间的动态区域和D,E之间的动态区域相对应的区域,因此,需要将模板中C,D之间的动态区域和D,E之间的动态区域扩展为C,E之间的动态区域,重新统计模板中C,E之间动态区域的特征信息并更新模板中对应的该动态区域特征统计信息(即更新模板中节点C中的动态特征统计信息)。最长公共子序列[A,B,C,E,F,G]中节点C的sig值为2,因此,C,E之间的动态区域为原始动态区域,并与模板中扩展后的动态区域对应(即模板中C,E之间的区域)。

步骤S8,根据原始动态区域和原始动态区域的动态区域特征统计信息、对应的模板中的动态区域和该动态区域的动态区域特征统计信息基于预定规则检测提取的原始动态区域是否被篡改。例如:模板有序列表为[A,B,C,D,E,F],B、D为动态区域起始标识节点,模板的动态区域为两个,即B,C之间的动态区域和D,E之间的动态区域,待测网页源码有序列表为[A,B,O,P,C,D,M,N,E,F],模板与待测网页有序列表的动态区域为两个,即B,C之间的动态区域和D,E之间的动态区域,两个B,C之间的动态区域对应,两个D,E之间的动态区域对应,该两个区域为原始动态区域,在检测动态区域是否被篡改时,两个B,C之间的动态区域进行比较,两个D,E之间的动态区域进行比较。

在本实施例中,动态区域篡改检测包含但不限于基于启发式的规则检测、基于敏感词的检测、黑链检测。

基于启发式的规则检测具体方法为:

将动态区域统计特征信息与模板中该动态区域的动态区域起始标识节点中包含的动态区域统计特征信息进行比较,若超出可接受弹性范围k,则认为触发启发式规则。其中,k值可根据用户需要设定。

步骤S9,输出被篡改的动态区域数据。输出的数据格式见步骤S7中描述的输出的检测结果的格式,具体为输出的检测结果中第二类。

步骤S10,将被篡改的静态区域数据和动态区域数据可视化展示。根据待测试网页源码有序列表中各节点的xpath在待测网页上做篡改位置标识、篡改数据展示等。

上述实施方式为本发明的优选案例,并不用来限制本发明的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1