基于关联WEB请求的数据库风险检测的方法与流程

文档序号:15492932发布日期:2018-09-21 21:00阅读:212来源:国知局

本发明属于数据库技术领域,涉及基于关联web请求的数据库风险检测的方法。



背景技术:

一般的数据库风险分析检测仅基于sql语句,致使部分非法发送的sql语句无法被识别。针对数据库的攻击一般来自三个方面,网络攻击包括网络嗅探,ddos,主机攻击包括口令破解,操作系统漏洞和木马等。针对数据库系统的攻击防护措施主要包括以下几方面:

口令入侵。数据库都有默认的用户名和密码,如oracle有一个默认的用户名scott,以及默认的口令tiger;微软的sqlserver的sa账户。除了普遍存在的默认口令,非默认的数据库口令也是不安全的,通过暴力破解就可以轻易地找到弱口令。

特权提升。特权提升通常与管理员错误的配置有关,如一个用户被误授予超过其实际需要的访问权限。另外,拥有一定访问权限的用户可以轻松地从一个应用程序跳转到数据库,即使他并没有这个数据库的相关访问权限。黑客只需要得到少量特权的用户口令,就可以进入了数据库系统,然后访问读取数据库内的任何表,包括信用卡信息、个人信息。

缓冲区溢出攻击。数据库系统同样会存在一些缓冲区溢出漏洞,比如microsoftsqlserver2000resolution服务存在堆缓冲溢出攻击、microsoftsqlserver2000bulk插入过程缓冲区溢出漏洞、microsoftsqlserver存在远程缓冲溢出、oraclenetserviceslink查询请求缓冲区溢出漏洞等。这些缓冲区溢出漏洞会被攻击者利用,通过构造恶意参数,以执行恶意代码。比如,2002年internet上出现的sqlslammer蠕虫就是利用microsoftsqlserver2000resolution服务存在堆缓冲溢出漏洞进行传播的。

sql注入攻击。sql注入攻击是黑客对数据库进行攻击的常用手段之一。随着b/s模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的sqlinjection,即sql注入。sql注入是从正常的www端口访问,而且表面看起来跟一般的web页面访问没什么区别,所以目前市面的防火墙都不会对sql注入发出警报,如果管理员没查看iis日志的习惯,可能被入侵很长时间都不会发觉。但是,sql注入的手法相当灵活,在注入的时候会碰到很多意外的情况,需要构造巧妙的sql语句,从而成功获取想要的数据。

除了以上常见的直接攻击手段内部的内部攻击、滥用和apt攻击更具威胁。这些攻击形式多变,仅通过sql语句难以区别,需要综合系统的上下文进行大量的分析才能发现。一般的生产业务系统,其对应的web应用固定,对数据的请求有固定的模式,可通过挖掘这些模式来建立检测库,收到的请求不符合这些检测库则可以判断有攻击风险。



技术实现要素:

本发明针对现有的技术存在的上述问题,提供基于关联web请求的数据库风险检测的方法,本发明所要解决的技术问题是:如何通过关联web请求检测数据库的风险。

本发明的目的可通过下列技术方案来实现:

基于关联web请求的数据库风险检测的方法,包括以下步骤:

s1:获取web请求数据和sql语句数据;

s2:根据web请求数据和sql语句数据挖掘web请求数据和sql语句数据的频繁项集;

s3:根据频繁项集生成web请求数据和sql语句数据的关联规则,根据关联规则生成web请求数据和sql语句数据的规则库;

s4:在一条数据库请求到达时,解析数据库请求获取sql语句数据;

s5:根据规则库获取sql语句数据的前置的web请求规则库数据,获取sql语句数据实际对应的web请求数据;

s6:判断web请求数据是否与web请求规则库数据相匹配,如果不匹配则sql语句数据存在风险,如果匹配则sql语句数据不存在风险。

优选的,所述步骤s2具体包括:

s21:选取一条web请求数据;

s22:选取第二预设时间内的sql请求数据;

s23:将sql语句数据和web请求数据组成事务数据库,筛选出事务数据库中支持度大于支持度阈值的事务组成频繁项集。

优选的,执行步骤s3时循环读取频繁项集中的每个事务,计算每个事务的置信度,将事务中置信度大于置信度阈值的事务组成特定sql请求模式和web请求模式中的web请求数据和sql语句数据的关联规则,根据关联规则生成web请求数据和sql语句数据的规则库。

优选的,步骤s21中读取web中的url参数,并将web请求数据进行预处理,提取预处理后的web请求处理数据的模式,抽取web请求处理数据中的url参数。

优选的,所述预处理包括过滤web请求数据中的静态资源。

优选的,所述静态资源包括js代码或图片。

优选的,执行步骤s5时获取第三预设时间内的sql语句实际对应的web请求数据。

优选的,所述第二预设时间的长度与第三预设时间的长度相等。

优选的,执行步骤s1时获取第一预设时间内的web请求数据和数据库请求中的sql语句数据,所述第一预设时间大于第二预设时间。

本发明中通过分析一段时间内的web请求数据和数据库请求中的sql语句数据,挖掘web请求数据和sql语句数据的频繁项集,根据频繁项集生成web请求数据和sql语句数据的关联规则,根据关联规则生成web请求数据和sql语句数据的规则库,在一条数据库请求到达时,解析数据库请求获取sql语句数据,根据规则库获取sql语句数据的前置的web请求规则库数据,获取sql语句数据实际对应的web请求数据,判断web请求数据是否与web请求规则库数据相匹配,如果不匹配则sql语句数据存在风险,如果匹配则sql语句数据不存在风险,从而可以完成对数据风险的检测,本方法的检测结果准确率高。

附图说明

图1是本发明中的流程示意图。

具体实施方式

以下是本发明的具体实施例并结合附图,对本发明的技术方案作进一步的描述,但本发明并不限于这些实施例。

请参阅图1,本实施例中的基于关联web请求的数据库风险检测的方法,可以包括以下步骤:

s1:获取web请求数据和数据库请求中的sql语句数据;

s2:根据web请求数据和sql语句数据挖掘web请求数据和sql语句数据的频繁项集;

s3:根据频繁项集生成web请求数据和sql语句数据的关联规则,根据关联规则生成web请求数据和sql语句数据的规则库;

s4:在一条数据库请求到达时,解析数据库请求获取sql语句数据;

s5:根据规则库获取sql语句数据的前置的web请求规则库数据,获取sql语句数据实际对应的web请求数据;

s6:判断web请求数据是否与web请求规则库数据相匹配,如果不匹配则sql语句数据存在风险,如果匹配则sql语句数据不存在风险。

此处,记录一段时间内的web请求数据和数据库请求中的sql语句数据,通过分析web请求数据和数据库请求中的sql语句数据可以挖掘web请求数据和sql语句数据的频繁项集,再根据频繁项集可以生成web请求数据和sql语句数据的关联规则,接着根据关联规则可以生成web请求数据和sql语句数据的规则库,然后在一条数据库请求到达时,通过解析数据库请求用来获取sql语句数据,根据获取的sql语句数据在规则库中获取sql语句数据的前置的web请求规则库数据,同时根据获取的sql语句数据收集其实际对应的web请求数据,这样就可以判断web请求数据是否与web请求规则库数据相匹配,如果不匹配则sql语句数据存在风险,如果匹配则sql语句数据不存在风险,从而可以完成对数据风险的检测,本方法的检测结果准确率高。

步骤s2可以具体包括:

s21:选取一条web请求数据,读取web请求数据中的url参数;

s22:根据url参数读取第二预设时间内的相匹配的数据库请求,提取数据库中的sql模式,提取sql模式中的sql语句数据;

此处,把sql语句数据中的参数值用占位符替换,则可以提取数据库中的sql模式。

s23:将sql语句数据和web请求处理数据组成事务,将一系列事务组成事务数据库,计算事务数据库中的每个事务的支持度,筛选出事务数据库中支持度大于支持度阈值的事务组成频繁项集。

此处,支持度可以为web请求数据和sql语句数据同时存在的概率,支持度通常用来删除那些无意义的规则。频繁项集可以为支持度大于支持度阈值的项集。收集一段时间内的web请求数据和sql语句数据,在计算出每个web请求数据和sql语句数据的支持度,设定一个支持度阈值,将大于支持度阈值的web请求数据和sql语句数据组合可以形成频繁项集。

执行步骤s3时可以循环读取频繁项集中的每个事务,计算每个事务的置信度,将置信度大于置信度阈值的事务组成特定sql请求模式和web请求模式中的web请求数据和sql语句数据的关联规则,根据关联规则生成web请求数据和sql语句数据的规则库,这样就可以方便用户检测数据库的风险。

此处,置信度可以为在sql语句数据存在的情况下web请求数据存在的概率,置信度则是通过规则进行推理具有可靠性。计算出频繁项集中的每个web请求数据和sql语句数据的置信度,设定一个置信度阈值,将大于置信度阈值的web请求数据和sql语句数据组合可以形成关联规则。根据关联规则可以形成web请求数据和sql语句数据的规则库。这样保证规则库的准确率高,使得检测数据库时准确率高。

步骤s21中可以读取web中的url参数,并将web请求数据可以进行预处理,提取预处理后的web请求处理数据的模式,抽取web请求处理数据中的url参数。

此处,提取预处理后的web请求处理数据的模式的方式包括根据请求的路径、参数名称、cookie等,抽取url参数用于确定提取的web请求处理数据的模式。

预处理可以包括过滤web请求数据中的静态资源。静态资源可以包括js代码或图片。这样就可以将静态资源过滤以使规则库内的规则更加准确。

执行步骤s5时可以获取第三预设时间内的sql语句实际对应的web请求数据。这样就可以确定获取的与sql语句实际对应的web请求数据的时间,保证检测的准确率。

第二预设时间的长度可以与第三预设时间的长度相等。这样就可以保证web请求数据的时间长度和sql规则语句数据的时间长度相同,避免出现两者时间长度不同,给检测结果造成干扰,影响了检测的判断。

执行步骤s1时可以获取第一预设时间内的web请求数据和数据库请求中的sql语句数据,第一预设时间大于第二预设时间,这样就可以保证所有的规则库内的数据均在收集的数据中,保证数据的准确性。第一预设时间足够长以使可以收集所有类型的web应用服务器请求数据和数据库服务器请求数据,保证数据正确,减小误差,保证规则库的准确率。

本文中所描述的具体实施例仅仅是对本发明精神作举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。

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