一种基于机器学习的SQL注入检测方法、数据库安全系统技术方案

技术编号:18972636 阅读:39 留言:0更新日期:2018-09-19 03:44
一种基于机器学习的SQL注入检测方法、数据库安全系统。本发明专利技术属于网络安全技术领域,公开了一种基于机器学习的SQL注入检测方法,所述基于机器学习的SQL注入检测方法从HTTP请求中提取参数,通过词法分析,语法分析生成样本的语法树,提取出语法树以及URL的特征,采用支持向量机的机器学习算法进行训练;将训练好的分类模型部署在Web服务与客户端之间,对生产环境中的HTTP请求进行分类,当判断出HTTP请求中含有SQL注入攻击时发出告警并阻断该请求,最后将该请求存入SQL注入攻击样例库。本发明专利技术对后台信息依赖低,仅仅需要获取Web服务接收到的HTTP请求;本发明专利技术部署难度低,可以部署在Web服务端与客户端之间,作为一个流量过滤器;本发明专利技术具有良好的准确性;本发明专利技术具有持续学习的能力;本发明专利技术具有良好的扩展性。

A SQL injection detection method and database security system based on machine learning

A machine learning based SQL injection detection method and database security system. The invention belongs to the field of network security technology, and discloses a machine learning-based SQL injection detection method. The machine learning-based SQL injection detection method extracts parameters from HTTP requests, generates syntax trees of samples through lexical analysis and syntax analysis, extracts syntax trees and URL features, and adopts support vector. Machine learning algorithms are trained; the trained classification model is deployed between Web services and clients to classify HTTP requests in the production environment. When the HTTP request is judged to contain SQL injection attack, an alarm is issued and the request is blocked. Finally, the request is stored in the SQL injection attack sample library. The invention has low dependence on background information and only needs to obtain HTTP requests received by Web services; the invention has low deployment difficulty and can be deployed between Web services and clients as a flow filter; the invention has good accuracy; the invention has the ability of continuous learning; and the invention has good expansion. Sex.

【技术实现步骤摘要】
一种基于机器学习的SQL注入检测方法、数据库安全系统
本专利技术属于数据网络安全
,尤其涉及一种基于机器学习的SQL注入检测方法、数据库安全系统。
技术介绍
目前,业内常用的现有技术是这样的:SQL是结构化查询语言(StructuredQueryLanguage)的简称,是一种用于操作数据库的语言。SQL注入是指通过把特定SQL命令插入到HTTP请求中,达到欺骗服务器以执行恶意SQL命令目的,从而窃取、篡改或者恶意删除数据。传统上,防护SQL注入主要在两个阶段进行。第一是在Web服务源码编写阶段进行防护,开发人员在编写源码时遵循防范SQL注入的经验性指导原则,使用“检查参数格式”,“过滤特殊字符”,“绑定参数”等方式使得SQL注入失效。但是这种方式的有效性取决于开发人员的安全防范知识水平的高低,往往容易留下不易察觉的漏洞。第二是在Web服务运行阶段进行防护,也就是部署入侵检测系统。传统的入侵检测系统有两种:基于程序分析的SQL注入检测系统。对Web服务程序进行分析,包括静态分析和动态分析两种策略。静态分析是分析源代码,找出潜在的安全漏洞。动态分析是在程序运行时完成,通过编写特定的测试用例来测试程序。缺点是必须获知Web应用的源代码,而且分析覆盖率不能得到保障,容易出现漏测。基于特征匹配的SQL注入方法。建立当前数据库服务的特征语法树,从中提取出合法的SQL语句语法树,然后进行模式匹配,如果被检测的SQL语句不符合合法模式就产生警告。但是这种方法需要预先知道源代码,并且进行大量人工工作来分析出合法SQL模式。或者通过分析大量SQL注入实例,生成非法SQL语句的匹配模型,然后对实际运行的SQL语句进行模式匹配,如果被检测SQL语句符合非法模型,则判定为SQL注入。这种方法无需获知应用的源代码。但是这种方法的成功率高度依赖非法模型的全面性和准确性。需要耗费大量人工分析,并且容易出现检测遗漏。综上所述,现有技术存在的问题是:需要获取Web服务源代码,或者需要耗费大量人工分析构建合法或者非法SQL的匹配模型。解决上述技术问题的难度和意义:要准确地探测出恶意的SQL请求并不容易,特别要重视检测的误报率。如果系统的误报率过高,那么它的判断结果就不能作为过滤SQL请求的依据,否则容易出现正常HTTP请求被拦截,影响Web服务的正常运行。针对该难点,本专利技术采用机器学习的方法,提取大量SQL注入请求和正常请求的统计学特征,训练分类模型,将检测误报率降低到1%以下。系统运行过程中判定的SQL注入请求会被存储到SQL注入样例库,可以作为日后的训练素材,对分类器进行重新训练,以提高检测系统的性能。因此,本专利技术是一个能够持续学习,不断提高精度的SQL注入检测系统。
技术实现思路
针对现有技术存在的问题,本专利技术提供了一种基于机器学习的SQL注入检测方法、数据库安全系统。本专利技术是这样实现的,一种基于机器学习的SQL注入检测方法,所述基于机器学习的SQL注入检测方法从HTTP请求中提取参数,通过词法分析,语法分析生成样本的语法树,提取出语法树以及URL的特征,采用支持向量机的机器学习算法进行训练;将训练好的分类模型部署在Web服务与客户端之间,对生产环境中的HTTP请求进行分类,当判断出HTTP请求中含有SQL注入攻击时发出告警并阻断该请求。进一步,所述基于机器学习的SQL注入检测方法包括:步骤一,获取机器学习的训练数据集;步骤二,对原始HTTP请求进行去噪和解码,得到请求字符串;步骤三,使用词法分析工具对步骤二中得到的请求字符串进行自动词法分析,记录下分析出的SQL关键词;步骤四,使用语法分析工具对步骤二中得到的解码后的字符串进行自动语法分析,形成语法树;步骤五,特征提取。统计原始HTTP请求的特征,词法分析结果的特征以及步骤四中语法树的特征,并组合这三种类型的特征作为样本的特征向量;步骤六,使用支持向量机算法对步骤五提取出的特征向量进行训练;生成一个SVM二分类器;步骤七,将训练好的SVM二分类器以及预处理和特征提取模块部署在Web服务器与客户端之间,对HTTP请求进行特征提取和分类;当判定HTTP请求含有SQL注入攻击行为时,发出告警,阻断该请求;并将可疑请求存入SQL注入攻击样例库。进一步,所述步骤一中构建SQL注入样例库,收集含有SQL注入攻击的HTTP请求样例以及正常HTTP请求样例,进行标记,作为机器学习的训练素材。进一步,所述基于机器学习的SQL注入检测方法包括:训练阶段和检测阶段;所述训练阶段具体包括:(1)对训练数据集的每条HTTP请求提取参数;并利用词法分析和语法分析生成语法树;(2)统计语法树的特征以及原始HTTP参数中的其他特征,将特征结合起来作为原始HTTP请求的特征向量;(3)使用支持向量机的算法对训练数据集的特征向量进行训练,形成一个分类器模型;所述检测阶段具体包括:(1)对训练数据集的每条HTTP请求提取参数;并利用词法分析和语法分析生成语法树,对实际应用环境中收到的HTTP请求提取参数,进行词法分析和语法分析生成语法树;(2)统计语法树的特征以及原始HTTP参数中的其他特征,将特征结合起来作为原始HTTP请求的特征向量,统计语法树的特征以及原始HTTP请求中的其他特征,将这些特征结合起来作为HTTP请求的特征向量;(3)将待分类的HTTP请求的特征向量输入到分类器模型,得到分类结果;(4)如果分类结果认为该HTTP请求含有SQL注入攻击,则启动告警和阻断机制。本专利技术的另一目的在于提供一种所述基于机器学习的SQL注入检测方法的基于机器学习的SQL注入检测系统,所述基于机器学习的SQL注入检测系统包括:训练阶段模块,用于对训练数据集的每条HTTP请求提取参数;并利用词法分析和语法分析生成语法树;统计语法树的特征以及原始HTTP参数中的其他特征,将这些特征结合起来作为原始HTTP请求的特征向量;使用支持向量机的算法对训练数据集的特征向量进行训练,形成一个分类器模型;检测阶段模块,用于对实际应用环境中收到的HTTP请求提取参数,进行词法分析和语法分析生成语法树;统计语法树的特征以及原始HTTP请求中的其他特征,将特征结合起来作为HTTP请求的特征向量;将待分类的HTTP请求的特征向量输入到分类器模型,得到分类结果;分类结果认为该HTTP请求含有SQL注入攻击,则启动告警和阻断机制。本专利技术的另一目的在于提供一种应用所述基于机器学习的SQL注入检测方法的信息数据处理终端。本专利技术的另一目的在于提供一种应用所述基于机器学习的SQL注入检测方法的计算机程序。综上所述,本专利技术的优点及积极效果为:本专利技术对后台信息依赖低,仅仅需要获取Web服务接收到的HTTP请求,无需获知Web服务的源码;本专利技术部署难度低,可以部署在Web服务端与客户端之间,作为一个流量过滤器;本专利技术具有良好的准确性,实验准确度高达99.5%,误报率低于0.8%;本专利技术具有持续学习的能力,因为检测器识别出的SQL注入请求会被保存到SQL注入攻击样例库,部署在不同设备上的检测器能够收集大量的SQL注入样例,经过去重后可以作为继续训练的素材,持续提高检测器的识别精度,降低误报率;本专利技术具有良好的扩展性,本方法只需获取足够多的其他种类恶意请求的样例本文档来自技高网
...

【技术保护点】
1.一种基于机器学习的SQL注入检测方法,其特征在于,所述基于机器学习的SQL注入检测方法从HTTP请求中提取参数,通过词法分析,语法分析生成样本的语法树,提取出语法树以及URL的特征,采用支持向量机的机器学习算法进行训练;将训练好的分类模型部署在Web服务与客户端之间,对生产环境中的HTTP请求进行分类,当判断出HTTP请求中含有SQL注入攻击时发出告警并阻断该请求。

【技术特征摘要】
1.一种基于机器学习的SQL注入检测方法,其特征在于,所述基于机器学习的SQL注入检测方法从HTTP请求中提取参数,通过词法分析,语法分析生成样本的语法树,提取出语法树以及URL的特征,采用支持向量机的机器学习算法进行训练;将训练好的分类模型部署在Web服务与客户端之间,对生产环境中的HTTP请求进行分类,当判断出HTTP请求中含有SQL注入攻击时发出告警并阻断该请求。2.如权利要求1所述的基于机器学习的SQL注入检测方法,其特征在于,所述基于机器学习的SQL注入检测方法包括:步骤一,获取机器学习的训练数据集;步骤二,对原始HTTP请求进行去噪和解码,得到请求字符串;步骤三,使用词法分析工具对步骤二中得到的请求字符串进行自动词法分析,记录下分析出的SQL关键词;步骤四,使用语法分析工具对步骤二中得到的解码后的字符串进行自动语法分析,形成语法树;步骤五,特征提取,统计原始HTTP请求的特征,词法分析结果的特征以及步骤四中语法树的特征,并组合这三种类型的特征作为样本的特征向量;步骤六,使用支持向量机算法对步骤五提取出的特征向量进行训练;生成一个SVM二分类器;步骤七,将训练好的SVM二分类器以及预处理和特征提取模块部署在Web服务器与客户端之间,对HTTP请求进行特征提取和分类;当判定HTTP请求含有SQL注入攻击行为时,发出告警,阻断该请求;并将可疑请求存入SQL注入攻击样例库。3.如权利要求2所述的基于机器学习的SQL注入检测方法,其特征在于,所述步骤一中构建SQL注入样例库,收集含有SQL注入攻击的HTTP请求样例以及正常HTTP请求样例,进行标记,作为机器学习的训练素材。4.如权利要求1所述的基于机器学习的SQL注入检测方法,其特征在于,所述基于机器学习的SQL注入检测方法包括:训练阶段和检测阶段;所述训练阶段具体包括:(1)对训练数据集的每条HTTP请求提取参数;并利用词法分析和语法分析生...

【专利技术属性】
技术研发人员:刘亚黄刚李洪超
申请(专利权)人:西安电子科技大学
类型:发明
国别省市:陕西,61

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1