一种SQL注入攻击的检测方法、装置、设备及介质与流程


一种sql注入攻击的检测方法、装置、设备及介质
技术领域
1.本发明涉及计算机技术领域,特别涉及一种sql注入攻击的检测方法、装置、设备及介质。


背景技术:



2.在sql注入攻击的检测的研究中,出现较多的方法是动态检测法,sql注入攻击一般都是因为攻击者输入一串攻击字符到程序的对外接口参数中,导致程序执行恶意的sql语句,所以可以通过动态检测法来拦截对外的接口请求,然后分析请求参数来判断是否遭受sql注入攻击。由于该技术是通过拦截对外的接口请求来分析请求参数中是否存在sql注入攻击,所以它很难检测到全部的攻击情况,有些攻击可能会通过多个参数来构造恶意sql语句,从而增加了检测难度。而且,有些sql注入攻击没有通过接口请求,而是通过其他方式进行攻击,对于这种情况该技术就无法检测。
3.为此,如何避免传统的检测方法中存在的难以检测全部sql注入攻击的情况是本领域亟待解决的问题。


技术实现要素:



4.有鉴于此,本发明的目的在于提供一种sql注入攻击的检测方法、装置、设备及介质,能够避免传统的检测方法中存在的难以检测全部sql注入攻击的情况,其具体方案如下:
5.第一方面,本技术公开了一种sql注入攻击的检测方法,包括:
6.对待执行的sql语句进行拦截,并对拦截后的所述sql语句进行解析;
7.对解析后的所述sql语句进行校验,并根据校验结果判断所述sql语句中是否存在sql注入攻击;
8.如果所述sql语句中存在所述sql注入攻击,则禁止执行所述sql语句,如果所述sql语句中不存在所述sql注入攻击,则执行所述sql语句。
9.可选的,所述对待执行的sql语句进行拦截,并对拦截后的所述sql语句进行解析,包括:
10.基于面向切面编程对待执行的sql语句进行拦截,并利用语法解析器对拦截后的所述sql语句进行解析。
11.可选的,所述对解析后的所述sql语句进行校验,包括:
12.判断解析后的所述sql语句是否为目标sql语句,如果所述sql语句不是所述目标sql语句,则直接对解析后的所述sql语句进行校验;其中,所述目标sql语句为符合预设复杂语句判定条件的语句。
13.可选的,所述判断解析后的所述sql语句是否为目标sql语句之后,还包括:
14.如果解析后的所述sql语句为所述目标sql语句,则对所述目标sql语句进行拆解,得到若干条拆解后sql语句,并对每一所述拆解后sql语句进行校验。
15.可选的,所述对所述目标sql语句进行拆解,得到若干条拆解后sql语句,包括:
16.基于自顶向下的分析方式识别所述目标sql语句中的小括号,并通过识别到的小括号对所述目标sql语句进行拆解,得到若干条拆解后sql语句。
17.可选的,所述sql注入攻击的检测方法,还包括:
18.基于自顶向下的分析方式识别所述目标sql语句中的目标关键字,并在对所述目标sql语句进行拆解后,基于所述目标关键字判断每一所述拆解后sql语句是否为独立完整的sql语句。
19.可选的,所述如果所述sql语句中存在所述sql注入攻击,则禁止执行所述sql语句,包括:
20.如果所述sql语句中存在所述sql注入攻击,则记录相应的攻击信息,并禁止执行所述sql语句。
21.第二方面,本技术公开了一种sql注入攻击的检测装置,包括:
22.sql语句拦截模块,用于对待执行的sql语句进行拦截,并对拦截后的所述sql语句进行解析;
23.sql注入攻击判断模块,用于对解析后的所述sql语句进行校验,并根据校验结果判断所述sql语句中是否存在sql注入攻击;
24.sql语句阻断模块,用于如果所述sql语句中存在所述sql注入攻击,则禁止执行所述sql语句;
25.sql语句执行模块,用于如果所述sql语句中不存在所述sql注入攻击,则执行所述sql语句。
26.第三方面,本技术公开了一种电子设备,包括:
27.存储器,用于保存计算机程序;
28.处理器,用于执行所述计算机程序,以实现前述公开的sql注入攻击的检测方法。
29.第四方面,本技术公开了一种计算机可读存储介质,用于保存计算机程序;其中,所述计算机程序被处理器执行时实现前述公开的sql注入攻击的检测方法。
30.可见,本技术提出一种sql注入攻击的检测方法,包括:对待执行的sql语句进行拦截,并对拦截后的所述sql语句进行解析;对解析后的所述sql语句进行校验,并根据校验结果判断所述sql语句中是否存在sql注入攻击;如果所述sql语句中存在所述sql注入攻击,则禁止执行所述sql语句,如果所述sql语句中不存在所述sql注入攻击,则执行所述sql语句。由此可见,本技术从程序内部入手,在sql语句执行前直接校验sql语句中是否存在sql注入攻击,如此一来,解决了传统的检测方法中存在的难以检测全部攻击情况的问题。
附图说明
31.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
32.图1为本技术公开的一种sql注入攻击的检测方法流程图;
33.图2为本技术公开的一种具体的sql注入攻击的检测方法流程图;
34.图3为本技术公开的一种具体的sql注入攻击的检测方法流程图;
35.图4为本技术公开的一种sql注入攻击的检测装置结构示意图;
36.图5为本技术公开的一种电子设备结构图。
具体实施方式
37.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
38.在sql注入攻击的检测的研究中,动态检测法通过拦截对外的接口请求来分析请求参数中是否存在sql注入攻击,所以它很难检测到全部的攻击情况,有些攻击可能会通过多个参数来构造恶意sql语句,从而增加了检测难度。而且,有些sql注入攻击没有通过接口请求,而是通过其他方式进行攻击,对于这种情况该技术就无法检测。
39.为此,本技术实施例提出一种sql注入攻击的检测方案,能够解决传统的检测方法中存在的难以检测全部攻击情况的问题。
40.本技术实施例公开了一种sql注入攻击的检测方法,参见图1所示,该方法包括:
41.步骤s11:对待执行的sql语句进行拦截,并对拦截后的所述sql语句进行解析。
42.本实施例中,首先对待执行的sql语句进行拦截,然后对拦截后的所述sql语句进行解析,得到解析后的所述sql语句。
43.步骤s12:对解析后的所述sql语句进行校验,并根据校验结果判断所述sql语句中是否存在sql注入攻击。
44.需要指出的是,对解析后的所述sql语句进行校验具体包括:判断解析后的所述sql语句是否为目标sql语句,如果所述sql语句不是所述目标sql语句,则直接对解析后的所述sql语句进行校验;其中,所述目标sql语句为符合预设复杂语句判定条件的语句;如果解析后的所述sql语句为所述目标sql语句,则对所述目标sql语句进行拆解,得到若干条拆解后sql语句,并对每一所述拆解后sql语句进行校验;所述预设复杂语句判定条件包括但不限于所述目标sql语句中存在子查询的sql语句。
45.本实施例中,所述对所述目标sql语句进行拆解,得到若干条拆解后sql语句具体可以包括:基于自顶向下的分析方式识别所述目标sql语句中的小括号,并通过识别到的小括号对所述目标sql语句进行拆解,得到若干条拆解后sql语句。需要指出的是,在通过识别到的小括号对所述目标sql语句进行拆解,得到若干条拆解后sql语句之后,还包括:基于自顶向下的分析方式识别所述目标sql语句中的目标关键字,并在对所述目标sql语句进行拆解后,基于所述目标关键字判断每一所述拆解后sql语句是否为独立完整的sql语句;其中,所述目标关键字包括但不限于:select、update、delete、alter、drop、create、truncate等ddl(数据定义语言)、dml(数据操作语言)关键字。
46.在一种具体的实施方式中,根据校验结果判断所述sql语句中是否存在sql注入攻击具体包括:判断sql语句中是否存在注释符
’‑‑’
、’#’、’/**/’;判断where条件中是否存在or a=a等恒等判断;判断select查询中是否包含delete、update等其它dml语句。
47.步骤s13:如果所述sql语句中存在所述sql注入攻击,则禁止执行所述sql语句,如
果所述sql语句中不存在所述sql注入攻击,则执行所述sql语句。
48.本实施例中,如果所述sql语句中存在所述sql注入攻击,则禁止执行所述sql语句,如果所述sql语句中不存在所述sql注入攻击,则执行所述sql语句。由此解决了传统的检测方法中存在的难以检测全部攻击情况的问题。
49.可见,本技术提出一种sql注入攻击的检测方法,包括:对待执行的sql语句进行拦截,并对拦截后的所述sql语句进行解析;对解析后的所述sql语句进行校验,并根据校验结果判断所述sql语句中是否存在sql注入攻击;如果所述sql语句中存在所述sql注入攻击,则禁止执行所述sql语句,如果所述sql语句中不存在所述sql注入攻击,则执行所述sql语句。由此可见,本技术从程序内部入手,在sql语句执行前直接校验sql语句中是否存在sql注入攻击,如此一来,解决了传统的检测方法中存在的难以检测全部攻击情况的问题。
50.本技术实施例公开了一种具体的sql注入攻击的检测方法,参见图2所示,该方法包括:
51.步骤s21:基于面向切面编程对待执行的sql语句进行拦截,并利用语法解析器对拦截后的所述sql语句进行解析。
52.本实施例中,具体可以基于面向切面编程(aop)对待执行的sql语句进行拦截,并利用语法解析器对拦截后的所述sql语句进行解析。
53.步骤s22:对解析后的所述sql语句进行校验,并根据校验结果判断所述sql语句中是否存在sql注入攻击。
54.其中,关于步骤s22更加具体的工作过程参见前述公开的实施例所示,在此不做具体赘述。
55.步骤s23:如果所述sql语句中存在所述sql注入攻击,则记录相应的攻击信息,并禁止执行所述sql语句,如果所述sql语句中不存在所述sql注入攻击,则执行所述sql语句。
56.需要指出的是,一般sql注入攻击的检测方法都是从程序外部入手,通过抓取数据包,分析请求数据来判断程序是否遭受sql注入攻击,这种方法存在一定的误报和漏报,而且该方法能收集到信息较少,不能完全的获取到攻击者的信息(例如攻击者所登录的用户、被攻击的模块等)。因此本实施例中,如果所述sql语句中存在所述sql注入攻击,则记录相应的攻击信息,并禁止执行所述sql语句,其中,所述攻击信息包括但不限于登录的用户、攻击的模块、攻击的sql语句等,如此一来,本技术能够获取到攻击者的信息,在一定程度上加强了对于sql注入攻击的防护能力。此外,本技术适用性广,兼容mysql、oracle、sql server等常见的关系型数据库。
57.可见,本技术提出一种sql注入攻击的检测方法,包括:基于面向切面编程对待执行的sql语句进行拦截,并利用语法解析器对拦截后的所述sql语句进行解析;对解析后的所述sql语句进行校验,并根据校验结果判断所述sql语句中是否存在sql注入攻击;如果所述sql语句中存在所述sql注入攻击,则记录相应的攻击信息,并禁止执行所述sql语句,如果所述sql语句中不存在所述sql注入攻击,则执行所述sql语句,由此可见,本技术从程序内部入手,在sql语句执行前直接校验sql语句中是否存在sql注入攻击,如此一来,解决了传统的检测方法中存在的难以检测全部攻击情况的问题。
58.图3为本技术公开的一种具体的sql注入攻击的检测方法流程图,参见图3所示,首先拦截将要执行的sql语句,然后对所述sql语句进行解析,当解析后的所述sql语句为符合
预设复杂语句判定条件的语句时,则对所述sql语句进行拆解,得到拆解后的多条sql语句,并对每一条拆解后的sql语句进行检验,以判断是否存在恶意的sql语句,所述恶意的sql语句也即存在sql注入攻击的语句,如果不存在恶意的sql语句,则对将要执行的所述sql语句进行执行,如果存在恶意的sql语句,则记录相应的攻击信息,并禁止执行相应sql语句,所述攻击信息包括但不限于恶意的sql语句、用户信息等。由此可见,本技术从程序内部入手,在sql语句执行前直接校验sql语句中是否存在sql注入攻击,如此一来,解决了传统的检测方法中存在的难以检测全部攻击情况的问题。
59.相应的,本技术实施例还公开了一种sql注入攻击的检测装置,参见图4所示,该装置包括:
60.sql语句拦截模块11,用于对待执行的sql语句进行拦截,并对拦截后的所述sql语句进行解析;
61.具体的,首先对待执行的sql语句进行拦截,然后对拦截后的所述sql语句进行解析,得到解析后的所述sql语句。
62.sql注入攻击判断模块12,用于对解析后的所述sql语句进行校验,并根据校验结果判断所述sql语句中是否存在sql注入攻击;
63.需要指出的是,对解析后的所述sql语句进行校验具体包括:判断解析后的所述sql语句是否为目标sql语句,如果所述sql语句不是所述目标sql语句,则直接对解析后的所述sql语句进行校验;其中,所述目标sql语句为符合预设复杂语句判定条件的语句;如果解析后的所述sql语句为所述目标sql语句,则对所述目标sql语句进行拆解,得到若干条拆解后sql语句,并对每一所述拆解后sql语句进行校验;所述预设复杂语句判定条件包括但不限于所述目标sql语句中存在子查询的sql语句。
64.所述对所述目标sql语句进行拆解,得到若干条拆解后sql语句具体可以包括:基于自顶向下的分析方式识别所述目标sql语句中的小括号,并通过识别到的小括号对所述目标sql语句进行拆解,得到若干条拆解后sql语句。需要指出的是,在通过识别到的小括号对所述目标sql语句进行拆解,得到若干条拆解后sql语句之后,还包括:基于自顶向下的分析方式识别所述目标sql语句中的目标关键字,并在对所述目标sql语句进行拆解后,基于所述目标关键字判断每一所述拆解后sql语句是否为独立完整的sql语句;其中,所述目标关键字包括但不限于:select、update、delete、alter、drop、create、truncate等ddl(数据定义语言)、dml(数据操作语言)关键字。
65.在一种具体的实施方式中,根据校验结果判断所述sql语句中是否存在sql注入攻击具体包括:判断sql语句中是否存在注释符
’‑‑’
、’#’、’/**/’;判断where条件中是否存在or a=a等恒等判断;判断select查询中是否包含delete、update等其它dml语句。
66.sql语句阻断模块13,用于如果所述sql语句中存在所述sql注入攻击,则禁止执行所述sql语句;
67.需要指出的是,如果所述sql语句中存在所述sql注入攻击,则禁止执行所述sql语句。
68.sql语句执行模块14,用于如果所述sql语句中不存在所述sql注入攻击,则执行所述sql语句。
69.如果所述sql语句中不存在所述sql注入攻击,则执行所述sql语句。由此解决了传
统的检测方法中存在的难以检测全部攻击情况的问题。
70.可见,本技术提出一种sql注入攻击的检测方法,包括:对待执行的sql语句进行拦截,并对拦截后的所述sql语句进行解析;对解析后的所述sql语句进行校验,并根据校验结果判断所述sql语句中是否存在sql注入攻击;如果所述sql语句中存在所述sql注入攻击,则禁止执行所述sql语句,如果所述sql语句中不存在所述sql注入攻击,则执行所述sql语句。由此可见,本技术从程序内部入手,在sql语句执行前直接校验sql语句中是否存在sql注入攻击,如此一来,解决了传统的检测方法中存在的难以检测全部攻击情况的问题。
71.在一些具体的实施例中,所述sql语句拦截模块11,具体包括:
72.sql语句拦截单元,用于基于面向切面编程对待执行的sql语句进行拦截,并利用语法解析器对拦截后的所述sql语句进行解析。
73.在一些具体的实施例中,所述sql注入攻击判断模块12,具体包括:
74.sql语句校验单元,用于判断解析后的所述sql语句是否为目标sql语句,如果所述sql语句不是所述目标sql语句,则直接对解析后的所述sql语句进行校验;其中,所述目标sql语句为符合预设复杂语句判定条件的语句。
75.在一些具体的实施例中,所述sql语句校验单元之后,进一步还包括:
76.sql语句拆解单元,用于如果解析后的所述sql语句为所述目标sql语句,则对所述目标sql语句进行拆解,得到若干条拆解后sql语句,并对每一所述拆解后sql语句进行校验。
77.在一些具体的实施例中,所述sql语句拆解单元,具体可以用于:
78.基于自顶向下的分析方式识别所述目标sql语句中的小括号,并通过识别到的小括号对所述目标sql语句进行拆解,得到若干条拆解后sql语句。
79.在一些具体的实施例中,所述sql注入攻击的检测装置,进一步还可以包括:
80.目标关键字识别模块,用于基于自顶向下的分析方式识别所述目标sql语句中的目标关键字,并在对所述目标sql语句进行拆解后,基于所述目标关键字判断每一所述拆解后sql语句是否为独立完整的sql语句。
81.在一些具体的实施例中,所述sql语句阻断模块13,具体可以包括:
82.sql语句阻断单元,用于如果所述sql语句中存在所述sql注入攻击,则记录相应的攻击信息,并禁止执行所述sql语句。
83.进一步的,本技术实施例还提供了一种电子设备。图5是根据一示例性实施例示出的电子设备20结构图,图中的内容不能认为是对本技术的使用范围的任何限制。
84.图5为本技术实施例提供的一种电子设备20的结构示意图。该电子设备20,具体可以包括:至少一个处理器21、至少一个存储器22、显示屏23、输入输出接口24、通信接口25、电源26和通信总线27。其中,所述存储器22用于存储计算机程序,所述计算机程序由所述处理器21加载并执行,以实现以下步骤:
85.对待执行的sql语句进行拦截,并对拦截后的所述sql语句进行解析;
86.对解析后的所述sql语句进行校验,并根据校验结果判断所述sql语句中是否存在sql注入攻击;
87.如果所述sql语句中存在所述sql注入攻击,则禁止执行所述sql语句,如果所述sql语句中不存在所述sql注入攻击,则执行所述sql语句。
88.在一些具体实施方式中,所述处理器通过执行所述存储器中保存的计算机程序,具体可以实现以下步骤:
89.基于面向切面编程对待执行的sql语句进行拦截,并利用语法解析器对拦截后的所述sql语句进行解析。
90.在一些具体实施方式中,所述处理器通过执行所述存储器中保存的计算机程序,具体可以实现以下步骤:
91.判断解析后的所述sql语句是否为目标sql语句,如果所述sql语句不是所述目标sql语句,则直接对解析后的所述sql语句进行校验;其中,所述目标sql语句为符合预设复杂语句判定条件的语句。
92.在一些具体实施方式中,所述处理器通过执行所述存储器中保存的计算机程序,进一步还可以实现以下步骤:
93.如果解析后的所述sql语句为所述目标sql语句,则对所述目标sql语句进行拆解,得到若干条拆解后sql语句,并对每一所述拆解后sql语句进行校验。
94.在一些具体实施方式中,所述处理器通过执行所述存储器中保存的计算机程序,具体可以实现以下步骤:
95.基于自顶向下的分析方式识别所述目标sql语句中的小括号,并通过识别到的小括号对所述目标sql语句进行拆解,得到若干条拆解后sql语句。
96.在一些具体实施方式中,所述处理器通过执行所述存储器中保存的计算机程序,进一步还可以实现以下步骤:
97.基于自顶向下的分析方式识别所述目标sql语句中的目标关键字,并在对所述目标sql语句进行拆解后,基于所述目标关键字判断每一所述拆解后sql语句是否为独立完整的sql语句。
98.在一些具体实施方式中,所述处理器通过执行所述存储器中保存的计算机程序,具体可以实现以下步骤:
99.如果所述sql语句中存在所述sql注入攻击,则记录相应的攻击信息,并禁止执行所述sql语句。
100.本实施例中,电源26用于为电子设备20上的各硬件设备提供工作电压;通信接口25能够为电子设备20创建与外界设备之间的数据传输通道,其所遵循的通信协议是能够适用于本技术技术方案的任意通信协议,在此不对其进行具体限定;输入输出接口24,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。
101.另外,存储器22作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,其上所存储的资源可以包括计算机程序221,存储方式可以是短暂存储或者永久存储。其中,计算机程序221除了包括能够用于完成前述任一实施例公开的由电子设备20执行的sql注入攻击的检测方法的计算机程序之外,还可以进一步包括能够用于完成其他特定工作的计算机程序。
102.进一步的,本技术实施例还公开了一种计算机可读存储介质,用于存储计算机程序;其中,所述计算机程序被处理器执行时实现前述公开的sql注入攻击的检测方法。
103.关于该方法的具体步骤可以参考前述实施例中公开的相应内容,在此不再进行赘
述。
104.本技术书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
105.专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
106.结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。
107.最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
108.以上对本技术所提供的一种sql注入攻击的检测方法、装置、设备、存储介质进行了详细介绍,本文中应用了具体个例对本技术的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本技术的方法及其核心思想;同时,对于本领域的一般技术人员,依据本技术的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本技术的限制。

技术特征:


1.一种sql注入攻击的检测方法,其特征在于,包括:对待执行的sql语句进行拦截,并对拦截后的所述sql语句进行解析;对解析后的所述sql语句进行校验,并根据校验结果判断所述sql语句中是否存在sql注入攻击;如果所述sql语句中存在所述sql注入攻击,则禁止执行所述sql语句,如果所述sql语句中不存在所述sql注入攻击,则执行所述sql语句。2.根据权利要求1所述的sql注入攻击的检测方法,其特征在于,所述对待执行的sql语句进行拦截,并对拦截后的所述sql语句进行解析,包括:基于面向切面编程对待执行的sql语句进行拦截,并利用语法解析器对拦截后的所述sql语句进行解析。3.根据权利要求1所述的sql注入攻击的检测方法,其特征在于,所述对解析后的所述sql语句进行校验,包括:判断解析后的所述sql语句是否为目标sql语句,如果所述sql语句不是所述目标sql语句,则直接对解析后的所述sql语句进行校验;其中,所述目标sql语句为符合预设复杂语句判定条件的语句。4.根据权利要求3所述的sql注入攻击的检测方法,其特征在于,所述判断解析后的所述sql语句是否为目标sql语句之后,还包括:如果解析后的所述sql语句为所述目标sql语句,则对所述目标sql语句进行拆解,得到若干条拆解后sql语句,并对每一所述拆解后sql语句进行校验。5.根据权利要求4所述的sql注入攻击的检测方法,其特征在于,所述对所述目标sql语句进行拆解,得到若干条拆解后sql语句,包括:基于自顶向下的分析方式识别所述目标sql语句中的小括号,并通过识别到的小括号对所述目标sql语句进行拆解,得到若干条拆解后sql语句。6.根据权利要求5所述的sql注入攻击的检测方法,其特征在于,还包括:基于自顶向下的分析方式识别所述目标sql语句中的目标关键字,并在对所述目标sql语句进行拆解后,基于所述目标关键字判断每一所述拆解后sql语句是否为独立完整的sql语句。7.根据权利要求1至6任一项所述的sql注入攻击的检测方法,其特征在于,所述如果所述sql语句中存在所述sql注入攻击,则禁止执行所述sql语句,包括:如果所述sql语句中存在所述sql注入攻击,则记录相应的攻击信息,并禁止执行所述sql语句。8.一种sql注入攻击的检测装置,其特征在于,包括:sql语句拦截模块,用于对待执行的sql语句进行拦截,并对拦截后的所述sql语句进行解析;sql注入攻击判断模块,用于对解析后的所述sql语句进行校验,并根据校验结果判断所述sql语句中是否存在sql注入攻击;sql语句阻断模块,用于如果所述sql语句中存在所述sql注入攻击,则禁止执行所述sql语句;sql语句执行模块,用于如果所述sql语句中不存在所述sql注入攻击,则执行所述sql
语句。9.一种电子设备,其特征在于,包括:存储器,用于保存计算机程序;处理器,用于执行所述计算机程序,以实现如权利要求1至7任一项所述的sql注入攻击的检测方法。10.一种计算机可读存储介质,其特征在于,用于保存计算机程序;其中,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的sql注入攻击的检测方法。

技术总结


本申请公开了一种SQL注入攻击的检测方法、装置、设备及介质,涉及计算机技术领域,所述方法包括:对待执行的SQL语句进行拦截,并对拦截后的所述SQL语句进行解析;对解析后的所述SQL语句进行校验,并根据校验结果判断所述SQL语句中是否存在SQL注入攻击;如果所述SQL语句中存在所述SQL注入攻击,则禁止执行所述SQL语句,如果所述SQL语句中不存在所述SQL注入攻击,则执行所述SQL语句。由此可见,本申请从程序内部入手,在SQL语句执行前直接校验SQL语句中是否存在SQL注入攻击,如此一来,解决了传统的检测方法中存在的难以检测全部攻击情况的问题。况的问题。况的问题。


技术研发人员:

许文滨 张德林

受保护的技术使用者:

杭州安恒信息技术股份有限公司

技术研发日:

2022.09.15

技术公布日:

2022/12/22

本文发布于:2024-09-24 09:21:03,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/47363.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:所述   语句   目标   检测方法
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议