CN111752729A - 一种构建三层关联关系模型的方法及三层关系识别方法 - Google Patents
一种构建三层关联关系模型的方法及三层关系识别方法 Download PDFInfo
- Publication number
- CN111752729A CN111752729A CN202010623557.6A CN202010623557A CN111752729A CN 111752729 A CN111752729 A CN 111752729A CN 202010623557 A CN202010623557 A CN 202010623557A CN 111752729 A CN111752729 A CN 111752729A
- Authority
- CN
- China
- Prior art keywords
- sql
- sequence
- request
- http
- http request
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2462—Approximate or statistical queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2474—Sequence data queries, e.g. querying versioned data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Probability & Statistics with Applications (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Fuzzy Systems (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种构建三层关联关系模型的方法,包括以下步骤:S1:提取记录用户访问情况的日志,并进行预处理;S2:对HTTP日志提取主体对象,得到HTTP请求,对HTTP请求和SQL日志中的SQL语句进行分解,并对分解后的HTTP请求和SQL语句分别进行匹配,存储匹配后的结构和参数;S3:基于时间顺序为每个HTTP请求结构匹配其后一段时间内发生的所有SQL结构,得到和序列;S4:基于关联规则算法计算得到HTTP请求和SQL语句的关联关系模型。本发明还提供了基于三层关联模型进行三层关系识别的方法。本发明的优点在于:基于时间序列和特征匹配构造关联关系模型;在统计的基础上挖掘请求和SQL的关系,提高识别的准确率;利用构建的模型对新的数据进行识别,时效性和准确性比较高。
Description
技术领域
本发明涉及数据安全技术领域,尤其涉及一种构建三层关联关系模型的方法及三层关系识别方法。
背景技术
三层审计,是根据服务器的部署方式,即浏览器-服务器-数据库服务器命名的,将应用层审计数据与数据库层审计数据综合起来进行关联分析,从而将应用层操作准确对应的数据库层的操作,当发生安全事件时,根据关联审计记录的日志信息,可快速定位到网络中的责任人。
如何精准的识别三层关联成为数据库安全审计的重要任务;现有技术通过对系统进行改造,在访问页面的日志中留下水印,在数据库日志中也留下相关的水印,通过水印对比,识别出三层关联。然而在对系统进行改造的情况下,有可能影响系统的稳定性。
现有技术还存在通过监听web服务和数据库之间的通信,解析其通信内容进行关联匹配,该方式虽然不需要深入改造系统,但是需要对通信内容进行精确匹配,需要人工标记,不过很多请求数据中其实并没有和SQL类似的内容,而且监听操作也有一定的安全风险。
公开号为CN110990168A的发明专利申请请求公开一种三层关联信息的生成方法,其根据目标API将线程ID及对应的WEB访问数据包、数据库访问数据包和协议类型相关联,实现三层关联信息,然而基于ID进行关联的方式局限性较大,识别精度不高。
发明内容
本发明所要解决的技术问题在于提供一种无须对系统进行改造和监听,基于日志分析即可识别出精确率较高的三层关联关系。
本发明是通过以下技术方案解决上述技术问题的:一种构建三层关联关系模型的方法,包括以下步骤:
S1:提取记录用户访问情况的HTTP日志和记录数据库变化的SQL日志,并对提取的日志进行预处理;
S2:对HTTP日志提取主体对象,得到HTTP请求,对HTTP请求和SQL日志中的SQL语句进行分解,并对分解后的HTTP请求和SQL语句分别进行匹配,存储匹配后的结构和参数;
S3:基于时间顺序为每个HTTP请求结构匹配其后一段时间内发生的所有SQL结构,得到和序列;
S4:基于关联规则算法计算得到HTTP请求和SQL语句的关联关系模型,输出符合最小支持度和最小置信度要求的最长序列。
本发明在不进行系统改造的前提下,利用系统记录的日志进行三层关联审计,通过对系统语言的处理和分析简化数据规模,基于时间序列和特征匹配构造关联关系模型;在统计的基础上挖掘请求和SQL的关系,提高识别的准确率;利用构建的模型对新的数据进行识别,时效性和准确性比较高。
优选的,所述HTTP日志包括记录请求发生时间的时间戳、记录请求类型、url的request和记录请求中附带的详细信息的request body;所述SQL日志包括记录SQL发生时间的操作时间、记录数据库操作的SQL语句;
S1中所述的预处理为剔除掉不必要参与计算的记录,方法为:
对于HTTP日志,剔除掉不与数据库通信的请求;对于SQL日志,剔除掉操作时必然包括的操作记录。
优选的,S2中提取HTTP请求的方法为:将request中的url提取出来,与requestbody合并得到所述HTTP请求;
对HTTP请求和SQL语句,以各自语句中标志字符串结构的关键字符作为标记进行分割,每条语句得到一个包括多个字符串的分解列表。
优选的,S2中分别对分解后的HTTP请求进行两两匹配的方法为:当路径相同的时候,两个请求分解列表中其他相同的部分提取出来作为格式,路径不同的部分合并在一起作为两个HTTP请求一种可能的参数,将所有格式、参数在分解列表中所述的位置、参数数量保存起来。
优选的,S3中对HTTP日志的时间戳和SQL日志的操作时间进行矫正,对每一个HTTP请求,获取其后一段时间内的SQL语句,按时间序列生成HTTP-SQL-······-SQL序列,记为和序列。
优选的,S4中使用关联规则算法计算关联关系模型的方法为:
步骤A:定义k=1,扫描数据集,对每个和序列提取第一项数据分别构建该和序列的候选k项集;
步骤B:计算候选k项集的支持度计数,如果候选k项集的支持度计数不小于最小支持度计数,则跳转步骤C,否则跳转步骤D,其中,支持度计数为项集出现的次数;
步骤C:对于每个频繁k项集,如果满足
support(k)/support(s)≥minconf
则输出规则s(k-s),跳转步骤D,如果不满足上述规则,则直接跳转步骤D;
其中,support(s)是频繁k项集的候选1项集的支持度,support(k)是频繁k项集的支持度,minconf是最小置信度阈值;
步骤D:基于频繁k项集,生成候选k+1项集,如果候选k+1项集为空,则结束;否则令k=k+1,返回步骤B。
优选的,所述支持度的计算方法为:
其中,number(X)为项集的总数,number(Allsamples)为所有的和序列的总数;
生成候选k+1项集的方法为,基于频繁k项集的序列,增加与频繁k项集属于同一和序列并在其后发生的任意一个SQL操作。
优选的,在步骤B中计算候选k项集的支持度计数时,先将S3中得到的以同一HTTP请求开始的和序列中随机选出两个和序列,求解这两个和序列的最长公共子序列,然后将该公共子序列与第三个和序列求解最长公共子序列,再将得到的最长公共子序列与剩余的和序列中的其中一个求解最长公共子序列,以此类推,直到没有公共子序列或遍历所有以该HTTP请求开始的和序列结束;将每个和序列中属于最长公共子序列的连续位置合并在一起,记为一个操作。
优选的,子序列为字符串中不一定连续但前后顺序一致的字符串;
求解两个和序列最长公共子序列长度的方法为:构建二维表格,两个和序列分别按顺序填充在表格的第一行和第一列,每个单元格填充一个字符,按照顺序逐行填充数字,起始值为0,如果填充位置对应的行和列字符相同,则该位置填左上位置+1后的值,如果不同则该位置填入左边和上方数值较大的值,表格中的最大值即为这两个和序列的最长公共子序列的长度;
即
其中,Xi为序列X上的第i个值,Yj为序列Y上的第j个值,c[i,j]为序列X:{X1,X2,…,Xi}与Y:{Y1,Y2,…,Yj}的最长公共子序列的长度;
求两个和序列最长公共子序列的方法为:
步骤i:在填充完数值的二维表格中,标记出所有两个和序列的字符相等的位置,记为跳跃点,并记录跳跃点对应的数值;
步骤ii:将数值最大的跳跃点对应的字符放入最长公共子序列的最后一位,然后在其左上方区域寻找次大值,将次大值对应的跳跃点字符放入最长公共子序列的倒数第二位,以此类推,直到找到数值为1的跳跃点,将对应的字符放入最长公共子序列的第一位,得到两个和序列的其中一个最长公共子序列;
步骤iii:重复步骤ii,直到找到所有最长公共子序列。
本发明还提供了一种基于三层关联关系模型识别三层关联关系的方法,使用所述的构建三层关联关系的方法构建三层关联关系模型,包括以下步骤:
对待识别SQL日志执行S1所述的预处理和S2所述的匹配处理,得到对应的结构和参数列表,对SQL结构使用S4中得到的关联关系模型查找所有与其相关的HTTP请求,
如果存在一个与其相关的HTTP请求时,则说明该SQL日志隶属于该HTTP请求;
如果存在多个与其相关的HTTP请求时,则计算SQL参数和与其相关的HTTP请求参数的相似度,以相似度最高的结果作为与该SQL日志相关的HTTP请求;
如果不存在与其相关的HTTP请求时,则直接计算SQL的结构和参数分别与HTTP请求的结构和参数的相关性,以相关度最高的作为与其相关的HTTP请求。
本发明提供的构建三层关联关系模型的方法及三层关系识别方法的优点在于:在不进行系统改造的前提下,利用系统记录的日志进行三层关联审计,通过对系统语言的处理和分析简化数据规模,基于时间序列和特征匹配构造关联关系模型;在统计的基础上挖掘请求和SQL的关系,提高识别的准确率;利用构建的模型对新的数据进行识别,时效性和准确性比较高。
附图说明
图1为本发明的实施例提供的构建三层关联关系模型的方法和使用该模型进行三层关联识别方法的流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,以及附图,对本发明作进一步的详细说明。
参考图1,本实施例提供了一种构建三层关联关系的方法,包括以下步骤:
S1:提取记录用户访问情况的HTTP日志和记录数据库变化的SQL日志,并对提取的日志进行预处理;
所述HTTP日志包括记录请求发生时间的时间戳、记录请求类型、url的request和记录请求中附带的详细信息的request body;所述SQL日志包括记录SQL发生时间的操作时间、记录数据库操作的SQL语句;
对访问日志进行预处理的方法为:
对于HTTP日志,剔除掉不与数据库通信的请求,如css,js,jpg,gif,ico,png等;
对于SQL日志,剔除掉操作时必然包括的操作记录,如commit。
S2:对HTTP日志提取主体对象,得到HTTP请求,对HTTP请求和SQL日志中的SQL语句进行分解,并对分解后的HTTP请求和SQL语句分别进行匹配,存储匹配后的结构和参数;
提取HTTP请求的方法为:将request中的url提取出来,与request body合并得到所述HTTP请求;
对HTTP请求和SQL语句,以各自语句中标志字符串结构的关键字符作为标记进行分割,每条语句得到一个包括多个字符串的分解列表;
request中url主要用“?”、“=”、“&”、“#”来进行标记分割;
request_body可能有很多格式,query格式的用“?”、“=”、“&”、“#”等字符作为标记,json格式的用“{”、“}”、“:”、“,”、“[”、“]”这些关键字作为标记;
sql中语句按“=”、“<”、“>”、“`”、“\s(空白符号)”、“!”、“,”、“(”、“)”,“+”,“-”,“*”,“/”等关键字作为标记进行分割;
以上仅列举了部分关键字符,本领域技术人员根据本申请的技术方案和以上实例能够根据具体的语句确定所述关键字符。
以HTTP请求为例,对于url格式/xxx/xxx/xxx.xx?xxx=xx&xxx=xx可分解成[‘/xxx/xxx/xxx.xx’,’?’,’xxx’,’=’,’xx’,’&’,’xxx’,’=’,’xx’],对于带json格式request body的HTTP请求,/xxx/xxx/xxx?xxx=xx{”xxx”:”xx”,”xxx”:”xx”},可分解成[‘/xxx/xxx/xxx’,’?’,’xxx’,’=’,’xx’,’{’,’”xxx”’,’:’,”’xx”’,’,’”xxx”’,’:’,’”xx”’,’}’]。
对分解后的HTTP请求进行两两匹配的方法为:当路径相同的时候,两个请求分解列表中其他相同的部分提取出来作为格式,路径不同的部分合并在一起作为两个HTTP请求一种可能的参数,将所有格式、参数在分解列表中所述的位置、参数数量保存起来。
以https://www.baidu.com/s?cl=3&tn=baidutop10&fr=top1000&wd=%E5%AD%9F%E6%99%9A%E8%88%9F%E5%BC%95%E6%B8%A1%E6%A1%88%E6%97%A5%E7%A8%8B%E7%A1%AE%E5%AE%9A&rsv_idx=2&rsv_dl=fyb_n_homepage&hisfilter=1;
和https://www.baidu.com/s?cl=3&tn=baidutop10&fr=top1000&wd=%E9%92%9F%E5%8D%97%E5%B1%B1%E8%AF%B4%E5%8C%97%E4%BA%AC%E7%96%AB%E6%83%85%E6%BA%90%E5%A4%B4%E6%AF%94%E6%AD%A6%E6%B1%89%E6%98%8E%E6%9C%97&r sv_idx=2&rsv_dl=fyb_n_homepage&hisfilter=1;两个HTTP请求进行说明。
路径都是https://www.baidu.com/s说明这两个url是同一个功能方向的,这样才能对两个url进行结构匹配
两者的分解列表为['https://www.baidu.com/s','?','cl','=','3','&','tn','=','baidutop10','&','fr','=','top1000','&','wd','=','%E5%AD%9F%E6%99%9A%E8%88%9F%E5%BC%95%E6%B8%A1%E6%A1%88%E6%97%A5%E7%A8%8B%E7%A1%AE%E5%AE%9A','&','rsv_idx','=','2','&','rsv_dl','=','fyb_n_homepage','&','hisfilter','=','1'];
和['https://www.baidu.com/s','?','cl','=','3','&','tn','=','baidutop10','&','fr','=','top1000','&','wd','=','%E9%92%9F%E5%8D%97%E5%B1%B1%E8%AF%B4%E5%8C%97%E4%BA%AC%E7%96%AB%E6%83%85%E6%BA%90%E5%A4%B4%E6%AF%94%E6%AD%A6%E6%B1%89%E6%98%8E%E6%9C%97','&','rsv_idx','=','2','&','rsv_dl','=','fyb_n_homepage','&','hisfilter','=','1']。
那么,这两个rul的参数即不同部分分别为:'%E5%AD%9F%E6%99%9A%E8%88%9F%E5%BC%95%E6%B8%A1%E6%A1%88%E6%97%A5%E7%A8%8B%E7%A1%AE%E5%AE%9A';
和'%E9%92%9F%E5%8D%97%E5%B1%B1%E8%AF%B4%E5%8C%97%E4%BA%AC%E7%96%AB%E6%83%85%E6%BA%90%E5%A4%B4%E6%AF%94%E6%AD%A6%E6%B1%89%E6%98%8E%E6%9C%97'。
其结构即相同部分为['https://www.baidu.com/s','?','cl','=','3','&','tn','=','baidutop10','&','fr','=','top1000','&','wd','=',”,'&','rsv_idx','=','2','&','rsv_dl','=','fyb_n_homepage','&','hisfilter','=','1'],参数对应的位置为空字符串”所在的位置16,参数数量为1。
S3:基于时间顺序为每个HTTP请求结构匹配其后一段时间内发生的所有SQL结构,得到和序列;
在进行时序匹配前,先对HTTP日志和SQL日志的操作时间进行矫正,使HTTP日志和SQL日志的时间维度统一,然后对每一个HTTP请求,获取其后一段时间内的SQL语句,按时间序列生成HTTP-SQL-SQL-······-SQL的序列,记为和序列;本实施例中匹配的时间长度为1s。
S4:基于关联规则算法计算得到HTTP请求和SQL语句的关联关系模型,输出符合最小支持度和最小置信度要求的最长序列,从而用该序列覆盖尽可能多的操作的三层关联关系。
使用关联规则算法构建关联关系模型的具体方法为:
步骤A:定义k=1,扫描数据集,对每个和序列提取第一项数据分别构建该和序列的候选k项集;
步骤B:计算候选k项集的支持度计数,如果候选k项集的支持度计数不小于最小支持度计数,则候选k项集为频繁项集,跳转步骤C,否则跳转步骤D,其中,支持度计数为项集出现的次数;
步骤C:对于每个频繁k项集,如果满足
support(k)/support(s)≥minconf
则输出规则s(k-s),跳转步骤D,如果不满足上述规则,则直接跳转步骤D;
其中,support(s)是频繁k项集的候选1项集的支持度,support(k)是频繁k项集的支持度,minconf是最小置信度阈值;
所述支持度的计算方法为:
其中,number(X)为项集的总数,number(Allsamples)为所有的和序列的总数;
步骤D:基于频繁k项集,生成候选k+1项集,如果候选k+1项集为空,则结束;否则令k=k+1,返回步骤B。
生成候选k+1项集的方法为,基于频繁k项集的序列,增加与频繁k项集属于同一和序列并在其后发生的任意一个SQL操作。
以和序列{A,a,b,c},{A,b,a,c},{B,a,c,d},{B,b,c,e},{C,a,b,c}构成的数据集为例进行说明,最小支持度计数设置为2,最小置信度阈值为min conf=0.8,第一次提取的候选1项集仅提取和序列的第一项,即仅提取HTTP请求,则候选1项集为{A},{A},{B},{B},{C};则项集{A},{B},{C}的支持度计数分别为2,2,1;则项集{A},{B}为频繁项集。
对于候选1项集来说,置信度均为1,此时预定的输出规则仅包括请求,不需要输出,直接跳转步骤D生成候选k+1项集即可。
例如,对于频繁项集{A}和{B},生成候选k+1项集,即候选2项集,分别为{A,a},{A,b},{A,c},{B,a},{B,b},{B,c},{B,d},{B,e};对应的支持度计数和置信度分别为
项集 | 支持度计数 | 置信度 | 项集 | 支持度计数 | 置信度 |
{A,a} | 2 | 1 | {B,b} | 1 | 0.5 |
{A,b} | 2 | 1 | {B,c} | 2 | 1 |
{A,c} | 2 | 1 | {B,d} | 1 | 0.5 |
{B,a} | 1 | 0.5 | {B,e} | 1 | 0.5 |
则满足最小支持度计数和最小置信度阈值要求的频繁项集为{A,a},{A,b},{A,c}和{B,c},则输出的规则为A-a,A-b,A-c和B-c,分别表示请求A发生后的一段时间内,会发生SQL操作a、b、c,以及请求B发生后的一段时间内会发生SQL操作c,本实施例中该时间段长度为1秒;
对频繁2项集{A,a},{A,b},{A,c}和{B,c},继续生成候选3项集,由于2项集{A,c}没有相关的候选3项集,故结果如下:
项集 | 支持度计数 | 置信度 | 项集 | 支持度计数 | 置信度 |
{A,a,b} | 1 | 0.5 | {A,b,a} | 1 | 0.5 |
{A,a,c} | 2 | 1 | {A,b,c} | 2 | 1 |
{B,c,d} | 1 | 0.5 | {B,c,e} | 1 | 0.5 |
以此类推,最终输出的结果为频繁3项集{A,a,c}和{A,b,c},最终输出的规则分别为A-a-c和A-b-c;分别表示在请求A发生后的1秒内会按顺序发生SQL的a和c操作以及b和c操作,最终保留符合最小支持度计数和最小置信度要求的最长频繁项集对应的输出规则,则该规则会覆盖较多的其他长度较短的输出规则,如{A,a,c}覆盖了{A,a}和{A,c},{A,b,c}覆盖了{A,b}和{A,c}。
在步骤B计算候选k项集的支持度计数时,如果序列较长还可以先对序列进行简化,由于本实施例提供的三层关联关系模型关注的是同一HTTP请求下对应的SQL语句的顺序,因此简化的方法如下:
先将S3中得到的以同一HTTP请求开始的和序列中随机选出两个和序列,求解这两个和序列的最长公共子序列,然后将该公共子序列与第三个和序列求解最长公共子序列,再将得到的最长公共子序列与剩余的和序列中的其中一个求解最长公共子序列,以此类推,直到没有公共子序列或遍历所有以该HTTP请求开始的和序列结束;将每个和序列中属于最长公共子序列的连续位置合并在一起,记为一个操作。本申请中对于子序列的定义为字符串中不一定连续但前后顺序一致的字符串;如abcdefg中,acdg,bdf属于它的子序列,而bac,dbfg则不是;
求解两个和序列最长公共子序列长度的方法为:构建二维表格,两个和序列分别按顺序填充在表格的第一行和第一列,每个单元格填充一个字符,按照顺序逐行填充数字,起始值为0,如果填充位置对应的行和列字符相同,则该位置填左上位置+1后的值,如果不同则该位置填入左边和上方数值较大的值,表格中的最大值即为这两个和序列的最长公共子序列的长度;即
其中,Xi为序列X上的第i个值,Yj为序列Y上的第j个值,c[i,j]为序列X:{X1,X2,…,Xi}与Y:{Y1,Y2,…,Yj}的最长公共子序列的长度;
以字符串x:ABCBDAB和y:BDCABA为例,建立一个二维数组,横向表示字符串BDCABA,纵向表示字符串ABCBDAB
依据上述规则在二维表格中填入数字,结果如上表所示,由此可知这两个字符串的最大公共子序列的长度为4。
求两个和序列最长公共子序列的方法为:
步骤i:在填充完数值的二维表格中,标记出所有两个和序列的字符相等的位置,记为跳跃点(上表中填充的点),并记录跳跃点对应的数值;
步骤ii:将数值最大的跳跃点对应的字符放入最长公共子序列的最后一位,此处先以B开始进行举例,然后在其左上方区域寻找次大值,将次大值对应的跳跃点字符A放入最长公共子序列的倒数第二位,以此类推,直到找到数值为1的跳跃点,将对应的字符放入最长公共子序列的第一位,得到两个和序列的其中一个最长公共子序列;
步骤iii:重复步骤ii,直到找到所有最长公共子序列;由此能够得到上述字符串的最长公共子序列分别为BCBA、BCAB、BDAB、BDAB,最后两个都是BDAB,但是起始的B位置不同。
下面以两个和序列{A,b,c,d,e,a,f,e,d,g,r,h,t,e,f,d,w,s,f,w,s,a,q}和{A,b,l,w,c,d,e,h,i,e,r,h,t,e,f,o}为例,对简化序列的方法进行说明;按照上述方法得到的二维表格如下:
由此可知这两个序列具有两个相同的最长公共子序列{b,c,d,e,e,r,h,t,e,f},其中最后一个f的位置不同,将连续位置上的SQL序列合并到一起,记为一个操作,则这两个序列将被处理为{A,b,c-d-e,a,f,e,d,g,r-h-t-e,f,d,w,s,f,w,s,a,q}和{A,b,l,w,c-d-e,h,i,e,r-h-t-e,f,o},即此时忽略了c-d-e和r-h-t-e分开或部分组合的情况,由此简化数据处理量,如果所有以同一HTTP请求开始的序列具有相同的公共子序列,则可根据该方法对所有以该HTTP请求开始的和序列全部进行优化处理。
基于上述方法构建得到三层关联关系模型后,本实施例还提供了基于三层关联关系模型进行三层关联关系识别的方法,包括以下步骤:
对待识别SQL日志执行S1所述的预处理和S2所述的匹配处理,得到对应的结构和参数列表,对SQL结构使用S4中得到的关联关系模型查找所有与其相关的HTTP请求,
如果存在一个与其相关的HTTP请求时,则说明该SQL日志隶属于该HTTP请求;
如果存在多个与其相关的HTTP请求时,则计算SQL参数和与其相关的HTTP请求参数的相似度,以相似度最高的结果作为与该SQL日志相关的HTTP请求;
如果不存在与其相关的HTTP请求时,则直接计算SQL的结构和参数分别与HTTP请求的结构和参数的相关性,以相关度最高的作为与其相关的HTTP请求。
其中相关性的计算方法使用现有技术中公开的Jaro-Winkler方法。
Claims (10)
1.一种构建三层关联关系模型的方法,其特征在于:包括以下步骤:
S1:提取记录用户访问情况的HTTP日志和记录数据库变化的SQL日志,并对提取的日志进行预处理;
S2:对HTTP日志提取主体对象,得到HTTP请求,对HTTP请求和SQL日志中的SQL语句进行分解,并对分解后的HTTP请求和SQL语句分别进行匹配,存储匹配后的结构和参数;
S3:基于时间顺序为每个HTTP请求结构匹配其后一段时间内发生的所有SQL结构,得到和序列;
S4:基于关联规则算法计算得到HTTP请求和SQL语句的关联关系模型,输出符合最小支持度和最小置信度要求的最长序列。
2.根据权利要求1所述的一种构建三层关联关系模型的方法,其特征在于:所述HTTP日志包括记录请求发生时间的时间戳、记录请求类型、url的request和记录请求中附带的详细信息的request body;所述SQL日志包括记录SQL发生时间的操作时间、记录数据库操作的SQL语句;
S1中所述的预处理为剔除掉不必要参与计算的记录,方法为:
对于HTTP日志,剔除掉不与数据库通信的请求;对于SQL日志,剔除掉操作时必然包括的操作记录。
3.根据权利要求2所述的一种构建三层关联关系模型的方法,其特征在于:S2中提取HTTP请求的方法为:将request中的url提取出来,与request body合并得到所述HTTP请求;
对HTTP请求和SQL语句,以各自语句中标志字符串结构的关键字符作为标记进行分割,每条语句得到一个包括多个字符串的分解列表。
4.根据权利要求3所述的一种构建三层关联关系模型的方法,其特征在于:S2中分别对分解后的HTTP请求进行两两匹配的方法为:当路径相同的时候,两个请求分解列表中其他相同的部分提取出来作为格式,路径不同的部分合并在一起作为两个HTTP请求一种可能的参数,将所有格式、参数在分解列表中所述的位置、参数数量保存起来。
5.根据权利要求4所述的一种构建三层关联关系模型的方法,其特征在于:S3中对HTTP日志的时间戳和SQL日志的操作时间进行矫正,对每一个HTTP请求,获取其后一段时间内的SQL语句,按时间序列生成HTTP-SQL-······-SQL序列,记为和序列。
6.根据权利要求5所述的一种构建三层关联关系模型的方法,其特征在于:S4中使用关联规则算法计算关联关系模型的方法为:
步骤A:定义k=1,扫描数据集,对每个和序列提取第一项数据分别构建该和序列的候选k项集;
步骤B:计算候选k项集的支持度计数,如果候选k项集的支持度计数不小于最小支持度计数,则候选k项集为频繁项集,跳转步骤C,否则跳转步骤D,其中,支持度计数为项集出现的次数;
步骤C:对于每个频繁k项集,如果满足
support(k)/support(s)≥min conf
则输出规则s(k-s),跳转步骤D,如果不满足上述规则,则直接跳转步骤D;
其中,support(s)是频繁k项集的候选1项集的支持度,support(k)是频繁k项集的支持度,min conf是最小置信度阈值;
步骤D:基于频繁k项集,生成候选k+1项集,如果候选k+1项集为空,则结束;否则令k=k+1,返回步骤B。
8.根据权利要求7所述的一种构建三层关联关系模型的方法,其特征在于:在步骤B中计算候选k项集的支持度计数时,先将S3中得到的以同一HTTP请求开始的和序列中随机选出两个和序列,求解这两个和序列的最长公共子序列,然后将该公共子序列与第三个和序列求解最长公共子序列,再将得到的最长公共子序列与剩余的和序列中的其中一个求解最长公共子序列,以此类推,直到没有公共子序列或遍历所有以该HTTP请求开始的和序列结束;将每个和序列中属于最长公共子序列的连续位置合并在一起,记为一个操作。
9.根据权利要求8所述的一种构建三层关联关系模型的方法,其特征在于:
子序列为字符串中不一定连续但前后顺序一致的字符串;
求解两个和序列最长公共子序列长度的方法为:构建二维表格,两个和序列分别按顺序填充在表格的第一行和第一列,每个单元格填充一个字符,按照顺序逐行填充数字,起始值为0,如果填充位置对应的行和列字符相同,则该位置填左上位置+1后的值,如果不同则该位置填入左边和上方数值较大的值,表格中的最大值即为这两个和序列的最长公共子序列的长度;
即
其中,xi为序列X上的第i个值,Yj为序列Y上的第j个值,c[i,j]为序列X:{X1,X2,…,Xi}与Y:{Y1,Y2,…,Yj}的最长公共子序列的长度;
求两个和序列最长公共子序列的方法为:
步骤i:在填充完数值的二维表格中,标记出所有两个和序列的字符相等的位置,记为跳跃点,并记录跳跃点对应的数值;
步骤ii:将数值最大的跳跃点对应的字符放入最长公共子序列的最后一位,然后在其左上方区域寻找次大值,将次大值对应的跳跃点字符放入最长公共子序列的倒数第二位,以此类推,直到找到数值为1的跳跃点,将对应的字符放入最长公共子序列的第一位,得到两个和序列的其中一个最长公共子序列;
步骤iii:重复步骤ii,直到找到所有最长公共子序列。
10.一种基于三层关联关系模型识别三层关联关系的方法,其特征在于:使用权利要求1-9任一项所述的方法构建三层关联关系模型,包括以下步骤:
对待识别SQL日志执行S1所述的预处理和S2所述的匹配处理,得到对应的结构和参数列表,对SQL结构使用S4中得到的关联关系模型查找所有与其相关的HTTP请求,
如果存在一个与其相关的HTTP请求时,则说明该SQL日志隶属于该HTTP请求;
如果存在多个与其相关的HTTP请求时,则计算SQL参数和与其相关的HTTP请求参数的相似度,以相似度最高的结果作为与该SQL日志相关的HTTP请求;
如果不存在与其相关的HTTP请求时,则直接计算SQL的结构和参数分别与HTTP请求的结构和参数的相关性,以相关度最高的作为与其相关的HTTP请求。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010623557.6A CN111752729B (zh) | 2020-06-30 | 2020-06-30 | 一种构建三层关联关系模型的方法及三层关系识别方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010623557.6A CN111752729B (zh) | 2020-06-30 | 2020-06-30 | 一种构建三层关联关系模型的方法及三层关系识别方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111752729A true CN111752729A (zh) | 2020-10-09 |
CN111752729B CN111752729B (zh) | 2023-06-27 |
Family
ID=72680335
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010623557.6A Active CN111752729B (zh) | 2020-06-30 | 2020-06-30 | 一种构建三层关联关系模型的方法及三层关系识别方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111752729B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20040000697A (ko) * | 2002-06-25 | 2004-01-07 | 주식회사 케이티 | 웹 서비스의 멀티쓰레드 운용 시스템 및 방법 |
US20070192304A1 (en) * | 2001-11-15 | 2007-08-16 | Iyer Arjun C | Method and System for an Operation Capable of Updating and Inserting Information in a Database |
CN104573124A (zh) * | 2015-02-09 | 2015-04-29 | 山东大学 | 一种基于并行化关联规则算法的教育云应用统计方法 |
US10303564B1 (en) * | 2013-05-23 | 2019-05-28 | Amazon Technologies, Inc. | Reduced transaction I/O for log-structured storage systems |
CN109871181A (zh) * | 2017-12-01 | 2019-06-11 | 航天信息股份有限公司 | 一种对象存取方法及装置 |
CN110826320A (zh) * | 2019-11-28 | 2020-02-21 | 上海观安信息技术股份有限公司 | 一种基于文本识别的敏感数据发现方法及系统 |
CN110990168A (zh) * | 2019-11-27 | 2020-04-10 | 深信服科技股份有限公司 | 三层关联信息的生成方法、系统、电子设备及存储介质 |
CN111163057A (zh) * | 2019-12-09 | 2020-05-15 | 中国科学院信息工程研究所 | 一种基于异构信息网络嵌入算法的用户识别系统及方法 |
-
2020
- 2020-06-30 CN CN202010623557.6A patent/CN111752729B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070192304A1 (en) * | 2001-11-15 | 2007-08-16 | Iyer Arjun C | Method and System for an Operation Capable of Updating and Inserting Information in a Database |
KR20040000697A (ko) * | 2002-06-25 | 2004-01-07 | 주식회사 케이티 | 웹 서비스의 멀티쓰레드 운용 시스템 및 방법 |
US10303564B1 (en) * | 2013-05-23 | 2019-05-28 | Amazon Technologies, Inc. | Reduced transaction I/O for log-structured storage systems |
CN104573124A (zh) * | 2015-02-09 | 2015-04-29 | 山东大学 | 一种基于并行化关联规则算法的教育云应用统计方法 |
CN109871181A (zh) * | 2017-12-01 | 2019-06-11 | 航天信息股份有限公司 | 一种对象存取方法及装置 |
CN110990168A (zh) * | 2019-11-27 | 2020-04-10 | 深信服科技股份有限公司 | 三层关联信息的生成方法、系统、电子设备及存储介质 |
CN110826320A (zh) * | 2019-11-28 | 2020-02-21 | 上海观安信息技术股份有限公司 | 一种基于文本识别的敏感数据发现方法及系统 |
CN111163057A (zh) * | 2019-12-09 | 2020-05-15 | 中国科学院信息工程研究所 | 一种基于异构信息网络嵌入算法的用户识别系统及方法 |
Non-Patent Citations (3)
Title |
---|
KUMAR,R ET AL: "WASM-A Metric for securing a Web Application", 《JOURNAL OR RESEARCH AND PRACTICE IN INFORMATION TECHNOLOGY》 * |
杨文等: "大型知识共享Web系统的软件设计与实现", 《现代电子技术》 * |
陆杰等: "分布式系统中的日志分析及应用", 《高技术通讯》 * |
Also Published As
Publication number | Publication date |
---|---|
CN111752729B (zh) | 2023-06-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109886294B (zh) | 知识融合方法、装置、计算机设备和存储介质 | |
CN100545847C (zh) | 一种对博客文章进行排序的方法及系统 | |
US8140267B2 (en) | System and method for identifying similar molecules | |
US9164980B2 (en) | Name identification rule generating apparatus and name identification rule generating method | |
CN111209411B (zh) | 一种文档分析的方法及装置 | |
CN108427714A (zh) | 基于机器学习的房源重复记录识别方法及系统 | |
CN102194012B (zh) | 微博话题检测方法及系统 | |
CN101409634A (zh) | 基于信息检索的互联网新闻影响力定量分析工具及方法 | |
CN1324046A (zh) | 信息检索系统 | |
CN105677638B (zh) | Web信息抽取方法 | |
CN103593371A (zh) | 推荐搜索关键词的方法和装置 | |
CN106708929A (zh) | 视频节目的搜索方法和装置 | |
CN110598129B (zh) | 基于两级信息熵的跨社交网络用户身份识别方法 | |
CN111859984A (zh) | 意图挖掘方法、装置、设备及存储介质 | |
CN109582743A (zh) | 一种针对恐怖袭击事件的数据挖掘方法 | |
CN105760492B (zh) | 数据分析方法及装置 | |
CN102722526A (zh) | 基于词性分类统计的重复网页和近似网页的识别方法 | |
JP5512737B2 (ja) | 話題抽出装置及び話題抽出方法 | |
CN111752729A (zh) | 一种构建三层关联关系模型的方法及三层关系识别方法 | |
CN109740147B (zh) | 一种大数量人才简历去重匹配分析方法 | |
Bafna et al. | Identification of significant challenges in the sports domain using clustering and feature selection techniques | |
CN106055572B (zh) | 页面转化参数的处理方法及装置 | |
CN115658993A (zh) | 一种网页的核心内容的智能化抽取方法及系统 | |
KR20030075219A (ko) | 벡터문서모델을 이용한 동일/유사제품 클러스트링 장치 및그 방법 | |
CN108897749A (zh) | 基于语法树和文本块密度的网页信息抽取方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |