一种SQL注入攻击检测方法和装置与流程

文档序号:11156202阅读:326来源:国知局
一种SQL注入攻击检测方法和装置与制造工艺

本发明涉及计算机技术领域,特别涉及一种SQL注入攻击检测方法和装置。



背景技术:

SQL(Structured Query Language,结构化查询语言)注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。SQL注入的存在,对数据库中数据的安全造成威胁。为了应对SQL注入,管理者一般采用第三方工具进行SQL注入攻击检测,例如,SQLmap工具。但是,对于同一个URL(Uniform Resource Locator,统一资源定位符)存在多个参数时,当发送多个请求时,现有的检测工具会将相同的URL过滤掉,造成漏测,进而造成数据库的安全性较低。



技术实现要素:

本发明实施例提供了一种SQL注入攻击检测方法和装置,能够降低SQL注入攻击的漏测率。

一方面,本发明实施例提供了一种SQL注入攻击检测方法,包括:

S1:获取当前组中的至少一个待检测HTTP(HyperText Transfer Protocol,超文本传输协议)请求,每个所述待检测HTTP请求,包括:URL和请求正文;

S2:根据每个所述待检测HTTP请求的URL和请求正文,生成每个所述待检测HTTP请求对应的请求标识,针对每个所述请求标识,对当前请求标识对应的请求标识相同的待检测HTTP请求中的一个待检测HTTP请求,进行SQL注入攻击检测。

优选地,

在所述S1之后,在所述S2之前,进一步包括:

设置所述当前组对应的请求标识列表,所述请求标识列表,用于存储请求标识;

所述S2,包括:

针对每个所述待检测HTTP请求,根据当前待检测HTTP请求的URL和请求正文,生成所述当前待检测HTTP请求对应的当前请求标识;判断所述请求标识列表中是否存在与所述当前请求标识相同的请求标识,如果是,结束当前流程,否则,将所述当前请求标识添加到所述请求标识中,并对所述当前待检测HTTP请求进行SQL注入攻击检测。

优选地,

所述根据当前待检测HTTP请求的URL和请求正文,生成所述当前待检测HTTP请求对应的当前请求标识,包括:

确定当前待检测HTTP请求的请求正文中包含的每一个参数的参数名称;

将所述每一个参数的参数名称,按照预设的排序规则进行排序,生成子请求标识;

将所述子请求标识与所述当前待检测HTTP请求的URL进行合并,生成所述当前待检测HTTP请求的当前请求标识。

优选地,

进一步包括:预先设置至少一个SQL注入关键字;

所述对当前请求标识对应的请求标识相同的待检测HTTP请求中的一个待检测HTTP请求,进行SQL注入攻击检测,包括:

判断所述当前请求标识对应的请求标识相同的待检测HTTP请求中的一个待检测HTTP请求中,是否存在任意一个所述SQL注入关键字,如果是,则认定所述当前请求标识对应的请求标识相同的待检测HTTP请求中的一个待检测HTTP请求存在SQL注入攻击,否则,则认定所述当前请求标识对应的请求标识相同的待检测HTTP请求中的一个待检测HTTP请求不存在SQL注入攻击。

优选地,

进一步包括:

预先设置至少一个无效请求扩展名;

在所述S1之前,进一步包括:

获取外部发来的至少一个待过滤HTTP请求,每个所述待过滤HTTP请求,包括:URL和请求正文;

针对每个所述待过滤HTTP请求,确定当前待过滤HTTP请求的URL中的当前扩展名,判断所述当前扩展名是否与任意一个所述无效请求扩展名相同,如果是,则所述当前待过滤HTTP请求为无效请求,结束当前流程,否则,将所述当前待过滤HTTP请求作为所述待检测HTTP请求,添加到所述当前组中,执行S1。

另一方面,本发明实施例提供了一种SQL注入攻击检测装置,包括:

第一获取单元,用于获取当前组中的至少一个待检测HTTP请求,每个所述待检测HTTP请求,包括:URL和请求正文;

第一处理单元,用于根据所述第一获取单元获取的每个所述待检测HTTP请求的URL和请求正文,生成每个所述待检测HTTP请求对应的请求标识,针对每个所述请求标识,对当前请求标识对应的请求标识相同的待检测HTTP请求中的一个待检测HTTP请求,进行SQL注入攻击检测。

优选地,

进一步包括:第一设置单元,用于设置所述当前组对应的请求标识列表,所述请求标识列表,用于存储请求标识;

所述第一处理单元,用于针对每个所述待检测HTTP请求,根据当前待检测HTTP请求的URL和请求正文,生成所述当前待检测HTTP请求对应的当前请求标识;判断所述第一设置单元设置的所述请求标识列表中是否存在与所述当前请求标识相同的请求标识,如果是,结束当前流程,否则,将所述当前请求标识添加到所述请求标识中,并对所述当前待检测HTTP请求进行SQL注入攻击检测。

优选地,

所述第一处理单元,进一步用于确定当前待检测HTTP请求的请求正文中包含的每一个参数的参数名称;将所述每一个参数的参数名称,按照预设的排序规则进行排序,生成子请求标识;将所述子请求标识与所述当前待检测HTTP请求的URL进行合并,生成所述当前待检测HTTP请求的当前请求标识。

优选地,

进一步包括:第二设置单元,用于设置至少一个SQL注入关键字;

所述第一处理单元,用于判断所述当前请求标识对应的请求标识相同的待检测HTTP请求中的一个待检测HTTP请求中,是否存在任意一个所述第二设置单元设置的所述SQL注入关键字,如果是,则认定所述当前请求标识对应的请求标识相同的待检测HTTP请求中的一个待检测HTTP请求存在SQL注入攻击,否则,则认定所述当前请求标识对应的请求标识相同的待检测HTTP请求中的一个待检测HTTP请求不存在SQL注入攻击。

优选地,

进一步包括:第三设置单元,用于设置至少一个无效请求扩展名;

第二获取单元,用于获取外部发来的至少一个待过滤HTTP请求,每个所述待过滤HTTP请求,包括:URL和请求正文;

第二处理单元,用于针对所述第二获取单元获取的每个所述待过滤HTTP请求,确定当前待过滤HTTP请求的URL中的当前扩展名,判断所述当前扩展名是否与任意一个所述第三设置单元设置的所述无效请求扩展名相同,如果是,则所述当前待过滤HTTP请求为无效请求,结束当前流程,否则,将所述当前待过滤HTTP请求作为所述待检测HTTP请求,添加到所述当前组中,触发所述第一获取单元。

本发明实施例提供了一种SQL注入攻击检测方法和装置,其中,该方法获取当前组中的至少一个HTTP请求,根据每个待检测HTTP请求的URL和请求正文,生成每个待检测HTTP请求对应的请求标识,针对每个请求标识,对当前请求标识对应的请求标识相同的待检测HTTP请求中的一个待检测HTTP请求,进行SQL注入攻击检测。该方法利用URL和请求正文对HTTP请求进行筛选,可以区分URL相同、请求正文不同的HTTP请求,防止HTTP请求由于URL相同被漏测,进而提高数据库的安全性。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明一个实施例提供的一种SQL注入攻击检测方法流程图;

图2是本发明一个实施例提供的另一种SQL注入攻击检测方法流程图;

图3是本发明一个实施例提供的一种SQL注入攻击检测装置结构示意图;

图4是本发明一个实施例提供的另一种SQL注入攻击检测装置结构示意图;

图5是本发明一个实施例提供的又一种SQL注入攻击检测装置结构示意图;

图6是本发明一个实施例提供的再一种SQL注入攻击检测装置结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

如图1所示,本发明实施例提供了一种SQL注入攻击检测方法,该方法可以包括以下步骤:

步骤101:获取当前组中的至少一个待检测HTTP请求,每个待检测HTTP请求,包括:URL和请求正文;

步骤102:根据每个待检测HTTP请求的URL和请求正文,生成每个待检测HTTP请求对应的请求标识,针对每个请求标识,对当前请求标识对应的请求标识相同的待检测HTTP请求中的一个待检测HTTP请求,进行SQL注入攻击检测。

在图1所示的实施例中,该方法获取当前组中的至少一个HTTP请求,根据每个待检测HTTP请求的URL和请求正文,生成每个待检测HTTP请求对应的请求标识,针对每个请求标识,对当前请求标识对应的请求标识相同的待检测HTTP请求中的一个待检测HTTP请求,进行SQL注入攻击检测。该方法利用URL和请求正文对HTTP请求进行筛选,可以区分URL相同、请求正文不同的HTTP请求,防止HTTP请求由于URL相同被漏测,进而提高数据库的安全性。

在本发明的一个实施例中,为了筛选出重复的待检测HTTP请求,该方法还包括:设置当前组对应的请求标识列表,请求标识列表,用于存储请求标识。步骤102还包括:针对每个待检测HTTP请求,根据当前待检测HTTP请求的URL和请求正文,生成当前待检测HTTP请求对应的当前请求标识;判断请求标识列表中是否存在与当前请求标识相同的请求标识,如果是,结束当前流程,否则,将当前请求标识添加到请求标识中,并对当前待检测HTTP请求进行SQL注入攻击检测。

对于不同的待检测HTTP请求,可能生成相同的请求标识,对于相同的请求标志对应的多个待检测HTTP请求,只需对其中的一个待检测HTTP请求进行SQL注入攻击检测。

HTTP请求主要包括:请求方法、URL、协议/版本;请求头;请求正文。其中请求方法主要根据实际配置操作内容确定,如获取规则表操作,一般为GET,添加、删除、修改规则一般为POST;URL中主要由IP、端口、根据实际配置操作确定的相对路径组成。请求头包含许多有关的客户端环境和请求正文的有用信息。请求正文中可以包含客户提交的参数信息。利用参数信息和URL,可以生成请求标志。

在本发明的一个实施例中,为了获得待检测HTTP请求对应的请求标识,根据当前待检测HTTP请求的URL和请求正文,生成当前待检测HTTP请求对应的当前请求标识,包括:确定当前待检测HTTP请求的请求正文中包含的每一个参数的参数名称;将每一个参数的参数名称,按照预设的排序规则进行排序,生成子请求标识;将子请求标识与当前待检测HTTP请求的URL进行合并,生成当前待检测HTTP请求的当前请求标识。

例如,“GET/sample.jsp HTTP/1.1”,“GET”代表请求方法,“/sample.jsp”表示URL,“HTTP/1.1代表协议和协议的版本。

例如,username=jinqiao&password=1234,其中,username和password为参数名称,jinqiao和password为参数值。

预设的顺序可以为参数名称首字母由前到后的顺序,例如,a、b、c、d……。也可以按照首字母由后到前的顺序,例如,z、y、x……。该顺序并不固定,只需要遵循一定的规则。本实施例中,以首字母由前到后的顺序,生成子请求标识为passwordusername,将该子请求标识与URL“/sample.jsp”合并为“/sample.jsppasswordusername”,即为当前请求标识。该合并方式可以为“URL子请求标识”,也可以为“子请求标识URL”。

在本发明的一个实施例中,为了对待检测HTTP请求进行SQL注入攻击检测,该方法还包括:预先设置至少一个SQL注入关键字;对当前请求标识对应的请求标识相同的待检测HTTP请求中的一个待检测HTTP请求,进行SQL注入攻击检测,包括:判断当前请求标识对应的请求标识相同的待检测HTTP请求中的一个待检测HTTP请求中,是否存在任意一个SQL注入关键字,如果是,则认定当前请求标识对应的请求标识相同的待检测HTTP请求中的一个待检测HTTP请求存在SQL注入攻击,否则,则认定当前请求标识对应的请求标识相同的待检测HTTP请求中的一个待检测HTTP请求不存在SQL注入攻击。

SQL注入攻击检测的方法多种多样,本实施例仅提供其中一种,即利用SQL注入关键字。SQL注入关键字的数量和类型并不固定。例如,预先设置一个SQL注入关键字“1=1”,判断待检测HTTP请求中是否存在“1=1”,如果存在,则待检测HTTP请求存在SQL注入攻击,否则,待检测HTTP请求不存在SQL注入攻击。再例如,预先设置两个SQL注入关键字“1=1”、“1=2”,判断待检测HTTP请求中是否存在“1=1”和“1=2”中任意一个,如果存在则待检测HTTP请求存在SQL注入攻击,否则,待检测HTTP请求不存在SQL注入攻击。

在本发明的一个实施例中,为了过滤掉无效的HTTP请求,提高SQL注入攻击检测的效率,该方法还包括:预先设置至少一个无效请求扩展名;在步骤101之前,还包括:获取外部发来的至少一个待过滤HTTP请求,每个待过滤HTTP请求,包括:URL和请求正文;

针对每个待过滤HTTP请求,确定当前待过滤HTTP请求的URL中的当前扩展名,判断当前扩展名是否与任意一个无效请求扩展名相同,如果是,则当前待过滤HTTP请求为无效请求,结束当前流程,否则,将当前待过滤HTTP请求作为待检测HTTP请求,添加到当前组中,执行步骤101。

该无效请求扩展名可以根据实际需求进行设置,例如,JavaScript脚本,图片,文本等。当前待过滤HTTP请求中存在无效请求扩展名中,则为无效请求,否则,将当前待过滤HTTP请求添加到包含待检测HTTP请求的当前组中。

如图2所示,本发明实施例以当前组中存在四个待过滤HTTP请求为例,对SQL注入攻击检测方法进行详细地说明,该方法包括:

步骤201:预先设置一个SQL注入关键字,一个无效请求扩展名。

SQL注入关键字,用于判断待检测HTTP请求是否存在SQL注入攻击;无效请求扩展名,用于过滤掉无效的待过滤HTTP请求。

在本实施例中,SQL注入关键字为“1=1”;无效请求扩展名为“jsp”。

步骤202:获取外部发来的四个待过滤HTTP请求,每个待过滤HTTP请求,包括:URL和请求正文。

接收外部发来的四个待过滤HTTP请求,包括:

待过滤HTTP请求A:

URL:“/index.php”,

请求正文:username=aa&password=1234;

待过滤HTTP请求B:

URL:“/index.jsp”,

请求正文:username=aa&age=12;

待过滤HTTP请求C:

URL:“/index.php”,

请求正文:username=aa&age=201=1;

待过滤HTTP请求D:

URL:“/index.php”,

请求正文:username=aa&password=12;

步骤203:针对每个待过滤HTTP请求,确定待过滤HTTP请求的URL中的当前扩展名,判断当前扩展名是否与无效请求扩展名相同,如果是,执行步骤204,否则,执行步骤205。

针对待过滤HTTP请求A,当前扩展名为“php”,与无效请求扩展名“jsp”不同,执行步骤205;

针对待过滤HTTP请求B,当前扩展名为“jsp”,与无效请求扩展名“jsp”相同,执行步骤204;

针对待过滤HTTP请求C,当前扩展名为“php”,与无效请求扩展名“jsp”不同,执行步骤205;

针对待过滤HTTP请求D,当前扩展名为“php”,与无效请求扩展名“jsp”不同,执行步骤205。

步骤204:待过滤HTTP请求为无效请求,结束当前流程。

待过滤HTTP请求B为无效请求,结束当前流程。

步骤205:将待过滤HTTP请求作为待检测HTTP请求,添加到当前组中,执行步骤206。

将待过滤HTTP请求A、C、D作为待检测HTTP请求,添加到当前组中,执行步骤206。

步骤206:获取当前组中的待检测HTTP请求,待检测HTTP请求,包括:URL和请求正文。

获取当前组中的待检测HTTP请求A、C、D。

步骤207:设置当前组对应的请求标识列表,请求标识列表,用于存储请求标识。

设置当前组对应的请求标识列表,用于存储请求标识。

步骤208:针对每个待检测HTTP请求,确定待检测HTTP请求的请求正文中包含的每一个参数的参数名称。

针对待检测HTTP请求A、D,请求正文中包含两个参数,参数名称分别为“username”、“password”;

针对待检测HTTP请求C,请求正文中包含两个参数,参数名称分别为“username”、“age”。

步骤209:将每一个参数的参数名称,按照预设的排序规则进行排序,生成子请求标识。

将参数名称按照首字母的顺序进行排列,针对待检测HTTP请求A、D,生成子请求标识“passwordusername”;针对待检测HTTP请求C,生成子请求标识“ageusername”

步骤210:将子请求标识与待检测HTTP请求的URL进行合并,生成待检测HTTP请求的当前请求标识。

针对待检测HTTP请求A、D,将子请求标识“passwordusername”与URL“/index.php”合并,其中,URL在前,则当前请求标识为“/index.phppasswordusername”。

针对待检测HTTP请求C,当前请求标识为“/index.phpageusername”

步骤211:判断请求标识列表中是否存在与当前请求标识相同的请求标识,如果是,执行步骤212,否则,执行步骤213。

针对待检测HTTP请求A、C和D,分别进行判断,例如,先对待检测HTTP请求A对应的当前请求标识“/index.phppasswordusername”进行判断,请求标识列表中此时为空,不存在与当前请求标识相同的请求标识,执行步骤213;

针对待检测HTTP请求C对应的当前请求标识“/index.phpageusername”,请求标识列表中不存在与当前请求标识相同的请求标识,执行步骤213;

针对待检测HTTP请求D对应的当前请求标识“/index.phppasswordusername”,请求标识列表中已存在与当前请求标识相同的请求标识,执行步骤212。

步骤212:结束当前流程。

步骤213:将当前请求标识添加到请求标识列表中。

将“/index.phppasswordusername”添加到请求标识列表中;将“/index.phpageusername”添加到请求标识列表中,执行步骤214。

步骤214:判断待检测HTTP请求中是否存在SQL注入关键字,如果是,执行步骤215,否则,执行步骤216。

待检测HTTP请求A中不存在SQL注入关键字“1=1”,执行步骤216。待检测HTTP请求C中存在SQL注入关键字“1=1”,执行步骤215。

步骤215:认定待检测HTTP请求存在SQL注入攻击。

当前待检测HTTP请求C存在SQL注入攻击。

步骤216:认定待检测HTTP请求不存在SQL注入攻击。

当前待检测HTTP请求A不存在SQL注入攻击。

如图3所示,本发明实施例提供了一种SQL注入攻击检测装置,包括:

第一获取单元301,用于获取当前组中的至少一个待检测HTTP请求,每个待检测HTTP请求,包括:URL和请求正文;

第一处理单元302,用于根据第一获取单元301获取的每个待检测HTTP请求的URL和请求正文,生成每个待检测HTTP请求对应的请求标识,针对每个请求标识,对当前请求标识对应的请求标识相同的待检测HTTP请求中的一个待检测HTTP请求,进行SQL注入攻击检测。

在本发明的一个实施例中,如图4所示,第一设置单元303,用于设置当前组对应的请求标识列表,请求标识列表,用于存储请求标识;

第一处理单元302,用于针对每个待检测HTTP请求,根据当前待检测HTTP请求的URL和请求正文,生成当前待检测HTTP请求对应的当前请求标识;判断第一设置单元303设置的请求标识列表中是否存在与当前请求标识相同的请求标识,如果是,结束当前流程,否则,将当前请求标识添加到请求标识中,并对当前待检测HTTP请求进行SQL注入攻击检测。

在本发明的一个实施例中,第一处理单元302,进一步用于确定当前待检测HTTP请求的请求正文中包含的每一个参数的参数名称;将每一个参数的参数名称,按照预设的排序规则进行排序,生成子请求标识;将子请求标识与当前待检测HTTP请求的URL进行合并,生成当前待检测HTTP请求的当前请求标识。

在本发明的一个实施例中,如图5所示,该SQL注入攻击检测装置,还包括:第二设置单元304,用于设置至少一个SQL注入关键字;

第一处理单元302,用于判断当前请求标识对应的请求标识相同的待检测HTTP请求中的一个待检测HTTP请求中,是否存在任意一个第二设置单元304设置的SQL注入关键字,如果是,则认定当前请求标识对应的请求标识相同的待检测HTTP请求中的一个待检测HTTP请求存在SQL注入攻击,否则,则认定当前请求标识对应的请求标识相同的待检测HTTP请求中的一个待检测HTTP请求不存在SQL注入攻击。

在本发明的一个实施例中,如图6所示,该SQL注入攻击检测装置,还包括:第三设置单元305,用于设置至少一个无效请求扩展名;

第二获取单元306,用于获取外部发来的至少一个待过滤HTTP请求,每个待过滤HTTP请求,包括:URL和请求正文;

第二处理单元307,用于针对第二获取单元获取的每个待过滤HTTP请求,确定当前待过滤HTTP请求的URL中的当前扩展名,判断当前扩展名是否与任意一个第三设置单元设置的无效请求扩展名相同,如果是,则当前待过滤HTTP请求为无效请求,结束当前流程,否则,将当前待过滤HTTP请求作为待检测HTTP请求,添加到当前组中,触发第一获取单元。

综上,本发明各个实施例至少具有如下效果:

1、在本发明实施例中,该方法获取当前组中的至少一个HTTP请求,根据每个待检测HTTP请求的URL和请求正文,生成每个待检测HTTP请求对应的请求标识,针对每个请求标识,对当前请求标识对应的请求标识相同的待检测HTTP请求中的一个待检测HTTP请求,进行SQL注入攻击检测。该方法利用URL和请求正文对HTTP请求进行筛选,可以区分URL相同、请求正文不同的HTTP请求,防止HTTP请求由于URL相同被漏测,进而提高数据库的安全性。

2、在本发明实施例中,提供了一种根据URL和请求正文的参数名称,生成请求标识的方法。通过该请求标识可以对待检测HTTP请求进行筛选,过滤掉重复的待检测HTTP请求,并且防止漏测情况的发生。

3、在本发明实施例中,提供了一种SQL注入攻击检测的方法,通过判断待检测HTTP请求中是否存在预设的SQL注入关键字,确定待检测HTTP请求是否存在SQL注入攻击,该方法操作简单,检测效率高。

4、在本发明实施例中,通过设置无效请求扩展名,对待过滤HTTP请求进行过滤,剔除无效的待过滤HTTP请求,确定待检测HTTP请求,该方法可以提高SQL注入攻击检测的效率。

上述装置内的各单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。

需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个〃·····”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同因素。

最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

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