一种结构化查询语言注入攻击的检测方法及装置的制造方法

文档序号:8943332阅读:306来源:国知局
一种结构化查询语言注入攻击的检测方法及装置的制造方法
【技术领域】
[0001]本发明涉及网络安全技术领域,尤其涉及一种结构化查询语言SQL注入攻击的检测方法及装置。
【背景技术】
[0002]结构化查询语言(Structured Query Language,SQL)注入是一种技术,经常用来入侵一个网站。通过把SQL命令插入到网页(Web)表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
[0003]现有技术中SQL注入攻击检测技术的原理如下:维护一个SQL注入攻击语句的正则特征库,该SQL注入攻击语句的正则特征库中包括SQL注入语句以及SQL注入语句的正则表达式;从用户输入的超文本传输协议(HyperText Transfer Protocol,HTTP)请求统一资源定位符(Uniform Resource Locator,URL)中提取待检测的SQL语句,将提取到的待检测的SQL语句与SQL注入语句的正则特征库进行正则匹配,如果匹配成功,则认为存在SQL注入攻击。
[0004]现有技术中SQL注入攻击检测技术的关键是要维护一个合理的SQL注入攻击语句的正则特征库,一方面,由于SQL注入攻击的多变性,SQL注入语句的正则特征库覆盖范围不可能绝对全面,在将待检测的SQL语句与SQL注入语句特征库中的语句进行正则匹配时,误报漏报率高;另一方面,随着SQL注入语句正则特征库的覆盖范围越来越大,在将待检测的SQL语句与SQL注入语句正则特征库进行正则匹配时,将花费大量时间,导致检测效率非常低,这是正则匹配一个周知的缺点。
[0005]综上所述,现有技术中在将待检测的SQL语句与SQL注入语句正则特征库进行正则匹配时,检测效率低,而且误报漏报率高。

【发明内容】

[0006]本发明实施例提供了一种结构化查询语言SQL注入攻击的检测方法及装置,用于提高SQL注入攻击的检测效率,降低误报漏报率。
[0007]本发明实施例提供的一种结构化查询语言SQL注入攻击的检测方法,该方法包括:获取待检测的SQL语句,并对所述待检测的SQL语句进行解析,得到所述待检测的SQL语句中包含的词法以及词法顺序,然后根据每一类词法与特定字符或特定字符串的对应关系和所述待检测SQL语句中包含的词法以及词法顺序将所述待检测的SQL语句转化为待检测的字符串,其中,所述待检测的字符串中包含的字符数量小于所述待检测的SQL语句中包含的字符数量;将所述待检测的字符串与预先存储的SQL注入(SQL Inject1n, SQLI)语句对应的字符串库中的字符串进行匹配;当所述待检测的字符串与所述预先存储的SQLI语句对应的字符串库中任一字符串匹配成功时,则确定存在SQL注入攻击。
[0008]本发明实施例提供的上述方法中,获取待检测的SQL语句,并对待检测的SQL语句进行解析,得到待检测的SQL语句中包含的词法以及词法顺序,然后根据每一类词法与特定字符或特定字符串的对应关系和待检测SQL语句中包含的词法以及词法顺序将待检测的SQL语句转化为待检测的字符串,将待检测的字符串与预先存储的SQLI语句对应的字符串库中的字符串进行匹配,与现有技术中将待检测的SQL语句与SQL注入语句正则特征库进行正则匹配相比,由于待检测的字符串中包含的字符数量小于原始的待检测的SQL语句中包含的字符数量,因此,在将待检测的字符串与预先存储的SQLI语句对应的字符串库中的字符串进行匹配时,减少了需要匹配的字符数量,从而缩短了匹配时间,提高了 SQL注入攻击的检测效率,同时,由于根据每一类词法与特定字符或特定字符串的对应关系和SQL语句中包含的词法以及词法顺序将SQL语句转化为对应的字符串,也即每一特定字符或特定字符串代表SQL语句中的一类词法属性,因此,预先存储的SQLI语句对应的字符串库中每一个字符串均可以代表一类SQL语句,而不仅仅代表一个具体的SQLI语句,使得在检测SQL注入攻击时,无论待检测的SQL语句如何变化,只要待检测的SQL语句对应的待检测的字符串与预先存储的SQLI语句对应的字符串库中的字符串相匹配,则确定存在SQL注入攻击,与现有技术中只有在发现待检测的SQL语句与SQL注入语句正则特征库中存储的SQL注入语句完全一致时才能确定存在SQL注入攻击相比,能够识别未知的SQL注入攻击,降低误报漏报率。
[0009]在一种可能的实施方式中,本发明实施例提供的上述方法中,在所述根据每一类词法与特定字符或特定字符串的对应关系和所述待检测SQL语句中包含的词法以及词法顺序将所述待检测的SQL语句转化为待检测的字符串之后,将所述待检测的字符串与预先存储的SQLI语句对应的字符串库中的字符串进行匹配之前,该方法还包括:确定所述待检测的字符串中包含的字符是否满足预设等级的条件;将所述待检测的字符串与预先存储的SQLI语句对应的字符串库中的字符串进行匹配,具体包括:当所述待检测的字符串中包含的字符满足预设等级的条件时,则将所述待检测的字符串与预先存储的SQLI语句对应的字符串库中的字符串进行匹配。
[0010]本发明实施例提供的上述方法中,在根据每一类词法与特定字符或特定字符串的对应关系和待检测SQL语句中包含的词法以及词法顺序将待检测的SQL语句转化为待检测的字符串之后,将待检测的字符串与预先存储的SQLI语句对应的字符串库中的字符串进行匹配之前,确定待检测的字符串中包含的字符是否满足预设等级的条件,当待检测的字符串中包含的字符满足预设等级的条件时,将待检测的字符串与预先存储的SQLI语句对应的字符串库中的字符串进行匹配,由于只有满足预设等级条件的待检测的字符串与预先存储的SQLI语句对应的字符串库中的字符串进行匹配,不满足预设等级的条件的待检测的字符串不与预先存储的SQLI语句对应的字符串库中的字符串进行匹配,从而能够进一步提尚检测的效率,同时可以控制检测的深度。
[0011]在一种可能的实施方式中,本发明实施例提供的上述方法中,所述预设等级的条件至少包括以下两个:条件一:所述待检测的字符串中包含指定字符;条件二:所述待检测的字符串中包含的字符数量大于或等于预设数量。
[0012]在一种可能的实施方式中,本发明实施例提供的上述方法中,不同类词法对应的特定字符或特定字符串不同。
[0013]在一种可能的实施方式中,本发明实施例提供的上述方法中,所述预先存储的SQLI语句对应的字符串库通过如下方式获得:输入SQL语句,并对输入的SQL语句进行解析,得到输入的SQL语句中包含的词法以及词法顺序,然后根据每一类词法与特定字符或特定字符串的对应关系和输入的SQL语句中包含的词法以及词法顺序将输入的SQL语句转化为对应的字符串;通过用于区分常规SQL语句对应的字符串和SQLI语句对应的字符串的算法将输入的SQL语句对应的字符串划分为常规SQL语句对应的字符串和SQLI语句对应的字符串,存储所述SQLI语句对应的字符串组成预先存储的SQLI语句对应的字符串库,其中,输入的SQL语句包括常规SQL语句和SQL注入语句。
[0014]本发明实施例提供的一种结构化查询语言SQL注入攻击的检测装置,包括:处理单元,用于获取待检测的SQL语句,并对所述待检测的SQL语句进行解析,得到所述待检测的SQL语句中包含的词法以及词法顺序,然后根据每一类词法与特定字符或特定字符串的对应关系和所述待检测SQL语句中包含的词法以及词法顺序将所述待检测的SQL语句转化为待检测的字符串,其中,所述待检测的字符串中包含的字符数量小于所述待检测的SQL语句中包含的字符数量;匹配单元,用于将所述待检测的字符串与预先存储的SQL注入SQLI语句对应的字符串库中的字符串进行匹配;确定单元,用于当所述待检测的字符串与所述预先存储的SQLI语句对应的字符串库中任一字符串匹配成功时,则确定存在SQL注入攻击。
[0015]本发明实施例提供的上述装置中,获取待检测的SQL语句,并对待检测的SQL语句进行解析,得到待检测的SQL语句中包含的词法以及词法顺序,然后根据每一类词法与特定字符或特定字符串的对应关系和待检测SQL语句中包含的词法以及词法顺序将待检测的SQL语句转化为待检测的字符串,将待检测的字符串与预先存储的SQLI语句对应的字符串库中的字符串进行匹配,与现有技术中将待检测的SQL语句与SQL注入语句正则特征库进行正则匹配相比,由于待检测的字符串中包含的字符数量小于原始的待检测的SQL语句中包含的字符数量,因此,在将待检测的字符串与预先存储的SQLI语句对应的字符串库中的字符串进行匹配时,减少了需要匹配的字符数量,从而缩短了匹配时间,提高了 SQL注入攻击的检测效率,同时,由于根据每一类词法与特定字符或特定字符串的对应关系和SQL语句中包含的词法以及词法顺序将SQL语句转化为对应的字符串,也即每一特定字符或特定字符串代表SQL语句中的一类词法属性,因此,预先存储的SQLI语句对应的字符串库中每一个字符串均可以代表一类SQL语句,而不仅仅代表一个具体的SQLI语句,使得在检测SQL注入攻击时,无论待检测的SQL语句如何变化,只要待检测的SQL语句对应的待检测的字符串与预先存储的SQLI语句对应的字符串库中的字符串相匹配,则确定存在SQL注入攻击,与现有技术中只有在发现待检测的SQL语句与SQL注入语句正则特征库中存储的SQL注入语句完全一致时才能确定存在SQL注入攻击相比,能够识别未知的SQL注入攻击,降低误报漏报率。
[0016]在一种可能的实施方式中,本发明实施例提供的上述装置中,该装置还包括:检测等级确定单元,用于在所述处理单元根据每一类词法与特定字符或特定字符串的对应关系和所述待检测SQL语句中包含的词法以及词法顺序将所述待检测的SQL语句转化为待检测的字符串之后,所述匹配单元将所述待检测的字符串与预先存储的SQLI语句对应的字符串库中的字符串进行匹配之前,确定所述待检测的字符串中包含的字
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1