[发明专利]基于意图的SQLIA防御方法有效
申请号: | 201610606127.7 | 申请日: | 2016-07-29 |
公开(公告)号: | CN106156623B | 公开(公告)日: | 2018-10-30 |
发明(设计)人: | 郭帆;毛辰宇 | 申请(专利权)人: | 江西师范大学 |
主分类号: | G06F21/56 | 分类号: | G06F21/56 |
代理公司: | 南昌市平凡知识产权代理事务所 36122 | 代理人: | 夏材祥 |
地址: | 330100 *** | 国省代码: | 江西;36 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 基于意图的SQLIA防御方法,包括SQL操作意图的表示和解析、SQL字符串的静态分析和插桩、SQL操作的拦截与检测三部分。本发明设计了一种意图描述语言SQLIDL,可以准确表示和解析程序的SQL操作意图。首先通过编写SQLIDL程序表示Java EE程序中可能提交的所有SQL操作字符串,生成程序的SQL操作意图集合,然后对程序静态分析自动提取可能违背意图的SQL字符串并对其进行插桩标记,最后在程序运行时对所有SQL操作进行拦截,但是只检测带有标记的SQL字符串,判定其是否属于预定义的意图集合,如不是则报警SQLIA攻击。本发明的设计方案可以实时检测针对Java EE程序的各种SQLIA攻击。 | ||
搜索关键词: | 基于 意图 sqlia 防御 方法 | ||
【主权项】:
1.一种基于意图的SQLIA防御方法,其特征是:所述方法包括SQL操作意图的表示和解析、SQL字符串的静态分析和插桩、SQL操作的拦截与检测三部分;所述SQL操作意图的表示和解析包括SQL意图描述语言SQLIDL的语法设计和SQLIDL的意图生成器;所述SQL操作意图描述语言SQLIDL的语法设计描述WEB程序的SQL操作集合和操作对象集合,操作对象包括值对象、列对象、表对象和方法名对象;一个SQLIDL程序包括变量声明语句、变量赋值语句和SQL操作语句,变量分为表变量、列变量、值变量和方法名变量;变量赋值语句将声明的变量赋予常量字符串值或正则表达式表示的字符串值,用于表示WEB程序允许操作哪些表或列;表变量表示允许操作的表名,列变量表示允许操作的列名,值变量表示允许读取、修改、添加或删除的列值,方法名变量表示允许调用哪些内置过程和存贮过程;SQL操作语句由关键字、变量和常量构成,SQLIDL的关键字与标准SQL语言的关键字相同,用于表示允许的SQL操作和查询条件等,变量必须预先声明和赋值,常量包括字符串和数字;所述SQLIDL意图生成器用于解释SQLIDL程序,把用户编写的SQLIDL程序解释为确定有限自动机DFA表示的SQL操作意图字符串集合;首先通过自顶向下的语法分析方法,将SQLIDL的每一条SQL操作语句转换为由关键字、SQL操作符号、常量串和变量组成的符号序列,然后将序列中的变量替换为变量赋值语句中对相应变量的赋值,该值为常量或正则表达式表示的值集合,即每条SQL操作语句被解释为由常量串和正则表达式组成的符号序列;然后使用自动机的基本操作实现DFA的构建,使用的基本操作包括创建新的自动机,即设置开始状态为接受状态,联结自动机操作,即在一个自动机的接受状态之前增加一个状态,联合自动机操作,即将原自动机的开始状态作为目标自动机的开始状态,原自动机的结束状态作为目标自动机的结束状态,使用上述操作将所有的符号序列转换为确定的字符串有限自动机;所述SQL字符串的静态分析和插桩包括SQL字符串的提取、SQL字符串与SQL意图交集判定、可疑SQL字符串的插桩和标记;所述SQL字符串提取首先根据预先配置的方法模板提取程序中所有相应SQL操作的方法调用语句,模板中指明方法的返回值类型、参数数量、参数类型、方法名以及方法调用类型;然后对每条语句提交的SQL字符串应用静态字符串分析,近似估计该串在程序中不同位置的取值,并生成一个用正则文法表示的字符串集合包含该串在程序中的所有取值;所述SQL字符串与SQL意图的交集判定应用自动机的交集计算方法;令正则文法表示的字符串集合为语言LN,预定义的DFA表示的SQL操作集合对应的语言为LM,如果LM的补集与LN不相交,即该SQL字符串的所有取值都属于预定义的操作意图集合,则该字符串不需要在运行时进行检测;否则它是需要检测的可疑SQL字符串;所述可疑SQL字符串的插桩和标记基于Jimple代码对可疑SQL字符串变量所在方法调用语句进行插桩,对提交给数据库的可疑SQL字符串变量加上标记,无需修改程序逻辑和源代码,仅对可疑变量的字符串的头部增加一个”—BADSQL‑‑”标记;所述SQL操作的拦截与检测包括拦截模块与检测模块;所述拦截模块基于JDBC驱动跟踪、拦截和转发任何使用JDBC的程序产生的SQL操作,在WEB程序部署时必须将数据库连接配置文件中的驱动程序设置为本发明的拦截模块;所述检测模块首先分析拦截到的SQL字符串是否包含”—BADSQL—“标记,对于不包含标记的字符串,直接转发并提交数据库;否则,在去除SQL字符串中的标记后,应用自动机判定方法检测该字符串是否属于预定义意图集合对应的语言LM,如是则转发并提交数据库,否则不转发并报警发现SQLIA攻击。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于江西师范大学,未经江西师范大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201610606127.7/,转载请声明来源钻瓜专利网。
- 上一篇:一种输电线路走廊周边山火发展趋势预测方法
- 下一篇:一种清热防暑保健枕头