[发明专利]一种基于语法分析的SQL防注入方法和装置在审
| 申请号: | 201710710787.4 | 申请日: | 2017-08-18 |
| 公开(公告)号: | CN107526968A | 公开(公告)日: | 2017-12-29 |
| 发明(设计)人: | 刘浩 | 申请(专利权)人: | 郑州云海信息技术有限公司 |
| 主分类号: | G06F21/56 | 分类号: | G06F21/56;G06F17/30 |
| 代理公司: | 济南诚智商标专利事务所有限公司37105 | 代理人: | 王汝银 |
| 地址: | 450018 河南省郑州市*** | 国省代码: | 河南;41 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 基于 语法分析 sql 注入 方法 装置 | ||
技术领域
本发明涉及网络安全技术领域,尤其是一种基于语法分析的SQL防注入方法和装置。
背景技术
SQL注入是一种常用的且易于实施的攻击手段,对网络应用程序的安全构成严重威胁。目前SQL注入的防范主要有手工检查、自动过滤、SQL命令编码以及专用API等几种方法。
手工检查要求应用开发人员在程序中添加针对用户输入信息的检查代码。开发人员需确切地区分什么是合法的输入信息,才能够精确过滤掉恶意输入。然而复杂架构下的应用程序需要处理大量用户输入,手工检查不仅极大地考验着开发人员的防SQL注入编码经验,也让程序变得难以维护。对于已上线运行的应用而言,为程序订制防SQL注入的升级补丁费用太高。
自动过滤是在网络服务前端增加一个应用级的防火墙,在接收到用户输入信息时进行集中检查,过滤掉恶意输入,而过滤程序通常采用特征字符串匹配算法,往往仅凭预先定义好的一系列正则表达式进行过滤,精心构造的恶意输入很容易绕过这种过滤程序。
SQL命令编码方法假设用户输入信息中不应该包含SQL命令,首先将SQL语句中的非用户输入部分的所有控制命令编码,编码后的SQL语句在提交给数据库执行前先经过SQL代理解码,SQL代理如果发现无法解码的SQL命令,则判定为用户输入了非法的控制命令。这种方法涉及到对Web服务器和数据库服务器平台软件的大量修改,实现和安装都十分繁琐。很多新的高级语言将常用的数据库操作封装成一些专用的API函数,程序员不需要构造SQL字符串,因此也不会有SQL注入的风险。新的应用程序使用专用API能够避免SQL注入,然而对于已经运行的大量应用而言则无能为力。
发明内容
本发明的目的是提供一种基于语法分析的SQL防注入方法和装置,该方法采用简单的特殊SQL文法就能够过滤绝大多数SQL注入攻击,不需要修改已有的应用程序代码,也不需要修改任何服务器平台软件。
为实现上述目的,本发明采用下述技术方案:
一种基于语法分析的SQL防注入方法,包括以下步骤:
获取用户表单输入;
对用户表单输入进行预处理操作;
根据构建的词法规则识别预处理操作后语句中的词素;
根据构建的语法规则对词素进行语法分析,提炼出抽象语法结构串;
判断抽象语法结构串与标准结构串是否匹配,如果匹配,则判定用户输入为简单结构,不构成SQL注入攻击;如果不匹配,则判定用户输入为复杂结构,构成SQL注入攻击。
进一步地,在对用户表单输入进行预处理操作之前,还包括:
提取用户表单输入,加入关键字组装成完整的SQL语句。
进一步地,所述预处理操作,包括:
对用户表单输入进行过滤注释和转换编码,所述过滤注释包括去掉用户表单输入中的干扰字符串,所述转换编码包括对用户表单输入中的十六进制编码进行转换。
进一步地,所述根据构建的词法规则识别预处理操作后语句中的词素,包括,
识别出预处理后的用户表单输入中的单词,判断单词是属于关键字、变量名、常量名中的哪一种,并形成词素列表。
进一步地,所述根据构建的语法规则对词素进行语法分析,提炼出抽象语法结构串,包括:
对词素列表进行语法分析,根据关键字提炼出用户输入的抽象字符串,并判断抽象字符串的类型。
进一步地,所述抽象字符串的类型,包括:
非注入,指正常用户输入,不构成注入攻击;值注入,将表达式右值替换为子查询语句或算术表达式;条件注入,扩展SQL语句的条件表达式;组合注入,利用SQL组合运算符构造复合查询来得到额外的数据库信息;语句注入,在原SQL语句后面附加额外的语句。
进一步地,所述标准结构串为非注入输入类型,语法表达式为A=V andA=V,即单个或多个A=V,这里的A表示变量,V表示值。
一种基于语法分析的SQL防注入装置,包括:
输入提取模块,完成对用户输入的提取;
预处理模块,完成对用户输入的过滤注释和转换编码的辅助工作;
词素列表提取模块,完成对用户输入单词的提取,并对用户输入单词的词性进行分析形成词素列表;
语法结构分析模块,对词素列表进行分析,完成抽象字符串的抽取;
语法结构串比对模块,对抽取抽象字符串与标准字符串进行比较,判断是否是SQL注入。
进一步地,还包括:
SQL语句组装模块,对提取的用户输入加入关键字形成完整的SQL语句。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于郑州云海信息技术有限公司,未经郑州云海信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710710787.4/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种风险地址识别方法、装置以及电子设备
- 下一篇:一种电视机五金件冲压设备





