CN107392014A - 基于数据库结构随机变化的sql注入防御方法和系统 - Google Patents
基于数据库结构随机变化的sql注入防御方法和系统 Download PDFInfo
- Publication number
- CN107392014A CN107392014A CN201710487275.6A CN201710487275A CN107392014A CN 107392014 A CN107392014 A CN 107392014A CN 201710487275 A CN201710487275 A CN 201710487275A CN 107392014 A CN107392014 A CN 107392014A
- Authority
- CN
- China
- Prior art keywords
- metadata
- sql injection
- title
- script
- defense
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000002347 injection Methods 0.000 title claims abstract description 85
- 239000007924 injection Substances 0.000 title claims abstract description 85
- 238000000034 method Methods 0.000 title claims abstract description 50
- 230000007123 defense Effects 0.000 claims abstract description 43
- 230000008859 change Effects 0.000 claims abstract description 36
- 230000001360 synchronised effect Effects 0.000 claims abstract description 7
- 230000009931 harmful effect Effects 0.000 claims abstract description 3
- 238000013515 script Methods 0.000 claims description 43
- 230000004048 modification Effects 0.000 claims description 37
- 238000012986 modification Methods 0.000 claims description 37
- 238000013461 design Methods 0.000 claims description 15
- 230000014509 gene expression Effects 0.000 claims description 14
- 230000006870 function Effects 0.000 claims description 13
- 230000008569 process Effects 0.000 claims description 12
- 230000009897 systematic effect Effects 0.000 claims description 11
- 230000009471 action Effects 0.000 claims description 7
- 230000036544 posture Effects 0.000 claims description 2
- 230000003993 interaction Effects 0.000 claims 1
- 238000012545 processing Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 7
- 238000001914 filtration Methods 0.000 description 4
- 238000012423 maintenance Methods 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 244000207740 Lemna minor Species 0.000 description 1
- 235000006439 Lemna minor Nutrition 0.000 description 1
- 235000001855 Portulaca oleracea Nutrition 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000006378 damage Effects 0.000 description 1
- 230000008260 defense mechanism Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/554—Detecting local intrusion or implementing counter-measures involving event detection and direct action
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/951—Indexing; Web crawling techniques
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Computer Security & Cryptography (AREA)
- Data Mining & Analysis (AREA)
- Computer Hardware Design (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明属于网络信息安全技术领域,具体为一种基于数据库结构随机变化的SQL注入防御方法和系统。本发明运用主动防御的思想,首先对数据库中的关键元数据名称进行主动、随机变化,并将这种变化与Web端的应用程序进行同步,使得整个数据库应用系统的元数据名称在一定的参数空间内随机变化,增大SQL注入的攻击者在元数据名称猜测上的难度;然后,通过设置合适的参数随机变化的时间间隔,增大名字空间,可以有效降低SQL注入攻击成功概率,并减小随机变化过程中对正常用户带来的不良影响。本发明系统主体包括SQL注入防御模块及Web端插件,组成为一个新型架构对Web服务器和数据库服务器所构成的应用系统进行安全加固,部署灵活、方便。
Description
技术领域
本发明属于网络信息安全技术领域,具体涉及SQL注入防御方法和系统。
背景技术
随着互联网应用的高速发展,基于Web的架构由于其简单、容易部署等优势,成为了很多业务架构的首选。这种架构中一般配置Web服务和数据库服务,在逻辑上这两种服务是分开的,即用户通过Web页面进行业务处理,在这个过程中由页面中所包含的脚本在必要时访问数据库服务。但是由于部分Web网页程序对用户传入的数据或页面的携带的参数不做合法性的判断或判断方法不完善,导致攻击者利用此漏洞将一段SQL语句植入到传入的参数中,从而对数据库进行破坏或者进行信息窃取等非法操作,即SQL注入攻击[1,3,7]。
目前主流的SQL注入防御手段是基于过滤的思想,即对来自Web页面的请求数据进行格式或者内容方面的规则检验,并在此基础上拒绝非法输入,只接受已知的合法输入或者将输入数据封装成合法的输入[2]。所采用的规则一般是基于输入变量的数据类型、数据长度、数据格式等进行限定[4,5]。
在数据类型和数据长度方面的检查,有如对于int整型输入变量进行类型检查;如果变量有大小范围的限定,如某些场景对用户输入的内容的长度有限制,则对内容进行长度判断,符合要求的请求再允许进一步执行相关数据库命令[6]。这种方法的局限性较大,不能防止攻击者利用字符串变量的注入,而且网页程序需要对每个输入都进行格式判断,工作量较大,增加了程序编写和修改难度。
对于格式有明确要求的输入,比如e-mail地址或者电话号码等,则可以采用正则表达式的过滤方法,排除不符合要求的输入[8]。这种方法也可以判断一些含有SQL关键字的注入。但是该方法不能过滤未知形式的SQL注入,容易将带有符合过滤正则表达式的合法输入也过滤掉。
转义处理也是一种常用的SQL注入防御方法,即对特殊符号进行过滤,包括单引号(’),双引号(”),反斜杠(\),NULL的字符串等。这种方法的优点是能将注入的SQL转义成字符串而不会被解析成SQL命令处理,但是攻击者仍然可以利用字符编码,绕过单引号转义。
目前应对SQL注入攻击最安全有效的是SQL预编译,其原理是创建SQL语句模版,将语句中的参数值用“”代替。这种方法以参数化查询的形式缓存至数据库,对于同一种SQL结构但参数不一样的语句不再进行重新编译,而是直接将查询参数作为字符串传入之前缓存的结构中,进行命令执行。不论这些输入字符串包含什么,都总是会被当作字符串,这就保证了所有用户传进来的数据只能被视为字符串查询参数用以查询,而不会被视为SQL指令去执行。但要根据实际的程序设计需求来进行相应的选择,例如如果传入的数据有误,需要返回错误信息或者跳转到404的错误信息提示页面,那么此方法就要与过滤检查的方法配合使用。
综上所述,可以看出目前SQL注入的防御方法有不少,但是由于程序设计需求的多样化、用户输入形式的多样化、数据库系统各自特性的差异、攻击手段的不断升级等原因,每种方法在运用上都存在一些问题。现有方法的基本思想是基于被动防御的思想,即当数据库SQL命令出现了某种可能被利用的漏洞或者发现攻击者采用某种新的攻击方法之后,才进行防御方法的设计、实现和部署。这种防御方法造成了一定滞后,在面对未知形式的SQL注入攻击上显然是难于奏效的。
在许多基于互联网的应用系统中,采用了Web服务器和数据库服务器的组合架构来为用户提供业务服务,针对这种应用模式所存在SQL注入安全隐患,本发明设计了一种不同于现有方法的新型防御技术。设计了SQL注入的主动防御模块,实现了数据库中元数据名称的随机变化,并且将这种随机变化与Web服务器上相关的业务处理脚本进行同步处理,并为系统用户提供管理关键参数的功能。本发明提出的方法能够按照合适的时间间隔自动随机地改变数据库系统中的表名、字段名等关键元数据名称,有效地防止攻击者对数据库结构的猜测,从而为防御SQL注入攻击提供一种新的途径。
发明内容
本发明的目的在于提供一种可以有效降低SQL注入攻击成功概率,并减小随机变化过程中对正常用户带来不良影响的SQL注入防御方法和系统。
本发明提出的SQL注入防御方法,是基于数据库结构随机变化的,即从一个新的角度进行SQL注入的防御,运用主动防御的思想,首先,设置合适的参数随机变化的时间间隔,设置元数据名称命名规则,增大名字空间;然后,对数据库中的关键元数据名称进行主动、随机变化,并将这种变化与Web端的应用程序进行同步,从而使得整个数据库应用系统的元数据名称在一定的参数空间内随机变化,增大SQL注入的攻击者在元数据名称猜测上的难度,有效降低SQL注入攻击成功概率,并减小随机变化过程中对正常用户带来的不良影响。
本发明提出的SQL注入防御系统,其总体架构如图1所示,主体包括SQL注入防御模块及Web端插件,它们共同组成为一个新型架构,对Web服务器和数据库服务器所构成的应用系统进行安全加固。SQL注入防御模块通过普通的数据库连接器与数据服务器建立连接,并执行一些元数据操作命令,该模块用于执行元数据和系统参数的管理维护、元数据名称的随机化、Web服务端的脚本更新、定时任务,以及与数据库服务器和Web服务器的命令交互;后者是通过一个驻留在Web服务器中的插件来完成的。
注入防御模块的具体功能设计如下:
(1)元数据和系统参数的管理、维护
数据库服务器中有一些关键的表名、字段名,它们通常是SQL注入攻击的对象,例如存储用户身份认证信息的表和相应的字段名称等,这些信息需要在SQL注入防御模块中事先登记,并根据具体安全态势进行维护。
除此以外,还有一些涉及系统性能的参数也需要事先维护并管理,主要有:元数据随机化的名字空间命名规则、元数据随机化的变化频次、Web端涉及元数据的页面以及页面元数据名称使用模式、两种服务器的连接参数,包括IP地址、连接用户信息等。
(2)元数据名称的随机化
根据设定的元数据及其名字空间命名规则,随机产生新的名字,例如将表名users改为users123、user1234s等,并将这种改变在数据库服务器上进行实时生效。这是通过在图1中的A连接上执行相应的数据库命令来实现,而数据库命令是基于标准的SQL语言,例如改变数据库表结构可以使用Alter table命令。
(3)Web服务端的脚本更新
数据库元数据名称的修改也同时影响到Web服务端的相关页面中的脚本代码,因此需要进行同步修改,以保证用户的正常使用。由于页面可能涉及较为复杂的业务过程,因此这里的脚本更新是基于系统参数管理中所设定的页面列表以及页面元数据名称使用模式,从而快速地定位需要更新的所有脚本。
在定位到需要修改的脚本位置后,修改脚本的过程只是将脚本中所包含的元数据名称替换成为新名称。实际的修改动作是发生在Web服务器上,具体是由SQL注入防御模块向驻留在Web服务器中的Web端插件发送命令,从而触发更新动作的执行。
(4)定时任务
通过定时器,根据设定的元数据名称随机化的变化频次,启动定时任务。在定时任务中完成上述的元数据名称的随机化、Web服务端的脚本更新两个功能。
端插件的功能设计如下:
该插件是一个执行机构,接收来自SQL注入防御模块发送的命令,并根据命令执行相关动作。该插件所处理的命令及动作设计如下:
(a) 接收页面列表及元数据名称使用模式
接收SQL注入防御模块中所维护的页面列表,这些页面都是需要进行脚本修改的。在接收到页面列表后,该插件在本地生成一个文件,保存这些页面列表。页面列表中的每个项即是存储于Web服务器的页面文件(含路径)。
同时每个页面对应着一些涉及元数据名称使用的模式,接收到这些模式后,该插件也需要将这些模式存储在本地文件中。由于页面的脚本都是程序员事先写好的,具有确定的实用模式,因此,这些模式就可以基于正则表达式来描述。
(b) 修改元数据名称使用模式
SQL注入防御模块发送修改名称的命令,表示通知该插件执行脚本的修改,将所有涉及到的元数据名称修改为新的名称。修改命令中携带有元数据标识及对应的名称。
作为本发明的核心部分,SQL注入防御模块和Web端插件的总体处理流程分别如图2、3所示。在图2的SQL注入防御模块的总体处理流程中,主体的处理过程由定时器调度。当定时任务开始后,依次进行数据库的连接、元数据随机化、Web服务端的脚本更新,之后就结束本次定时任务,等待下一次任务启动。
图3的Web端插件的总体处理流程,是根据它所接收的不同命令而进行处理的。主要的命令有三种,当页面列表及元数据名称模式设置时,该插件只要将这些信息存储起来即可;当接收到修改元数据名称使用模式的命令时,则根据存储的页面列表及模式,将页面中指定的元数据模式替换成为修改命令所携带的参数,完成本次修改后,再返回等待命令;而当接收到的是停止接收命令时,停止插件的监听功能。
本发明中,元数据名称的随机化生成规则符合随机性、辨别性以及统一性,设计的规则采用随机字符替换法,包括直接替换、追加字符串、以及随机替换三种。
本发明中,使用正则表达式定义Web端的脚本文件中需要修改的元数据名称使用模式。正则表达式设计得越精细,定位就会越精准。
本发明中,元数据名称使用模式的存储结构设计上,使用文本文件的存储方式。文件中定义了若干个脚本文件区域,每个区域的一行以#开始,后续接着脚本文件的文件名。区域的其他部分则定义该文件中的每个元数据模式,即正则表达式。
本发明中,既可实现足够的元数据名称随机性,又能够使得名称具有一定的辨别性,程序系统的开发维护人员仍可以直观地从替换后的名称知道最初的字段名。
相对于现有的SQL注入防御方法,本发明采用主动防御的思想,使得数据库系统中的关键元数据名称在一定的名字空间内进行随机变化,并同步到Web页面中的相关脚本文件。这种防御方式使得攻击者在发起SQL注入攻击之前的表名、字段名等元数据名称的猜测就变得很困难,成功达到SQL注入攻击的概率大大降低。从图1的总体架构看,本发明只是增加了一个独立于应用系统的SQL注入防御模块以及一个简单的Web端插件,因此在部署上灵活方便。通过设置合适的元数据名称随机化的名字空间和随机化变化的频次,可以极大地增强防御各种形式的SQL注入,同时能保证对正常用户在系统使用中的业务影响尽可能小。
综上所述,本发明具有实质性特点和显著进步:
(1)大大降低SQL注入攻击成功的概率。本发明基于主动防御思想,使得应用系统中关键元数据名称主动随机变化,攻击者在一个变化周期内难于猜测出元数据名称。并且可以容易地扩大名字空间,从而使得SQL注入攻击成功的概率大大降低。
(2)可以抵御新型、未知的SQL注入攻击。本发明运用了主动防御思想,使得自身对外体现出来的参数并不固定,对于新型未知的SQL注入由于无法及时获得准确的元数据名字,从而通过构造各种特殊的SQL命令及参数的攻击,就无法成功。而现有各种SQL注入方式需要在知道注入方式后才能进行安全加固,因此相比于现有SQL注入方式而言,本发明具有极大的安全性改进。
(3)具有灵活、易部署特征。本发明包含了SQL注入防御模块和Web端插件,其中SQL注入防御模块是一个独立于应用系统的模块,与具体的应用系统之间只要通过访问数据库服务器和IP访问,不改变应用系统原来的流程。Web端插件是驻留在Web服务器上的一个独立地址空间上的模块,自身也不影响应用系统的功能。
附图说明
图1 总体架构。
图2 SQL注入防御模块的总体处理流程。
图3 Web端插件的总体处理流程。
图4为Web端插件存储文本文件的结构。
具体实施方式
以下针对该发明的总体架构中的关键技术及实现方式进行详细说明,主要包括元数据和系统参数的管理与维护、元数据名称的随机化、元数据名称的修改、Web服务端的脚本更新、Web端插件以及定时任务。
1、元数据和系统参数的管理与维护
在管理与维护功能中,设置需要进行随机化的元数据名称列表,一般来说,并不需要把整个数据库的所有元数据名称都记录到SQL注入防御模块中,这是因为不同元数据对攻击者的作用并不相同。这里维护两个关键的文件,分别是系统配置文件和元数据文件。
系统参数可以以简易的系统配置文件格式来存储,文件中的每一行基本的形式如下:
参数名称=参数值
例如,Freq=10表示随机化的修改频次设置为10分钟。
对于元数据名称,有一个特殊的要求是需要记录其当前值以及将被替换成的新值,这样在修改更新时才能方便地进行匹配定位。通过文本文件记录形式来保存元数据名称的当前值和新值,元数据文件的每一行形式如下:
元数据名称=当前值,新值
其中,“元数据名称”是元数据的原始名称,“当前值”是当前数据库和Web服务器上所使用的名称,“新值”则随每次随机化后得到的值。
2、元数据名称的随机化
对于元数据名称的随机化而言,随机化的生成规则是其中的关键。生成规则要保证符合随机性、辨别性以及统一性。同时,名称的所有可能的值域空间越大越好,攻击者穷举尝试的次数就越多,对于防御SQL注入的效果就会越好。
设计的规则采用随机字符替换法,采用随机方法生成字符。思路是,首先生成随机数,从26个英文字母中随机取出指定个数N的字符拼成字符串S,然后将原名称的字符串按照一定规则进行修改。这里N就是名字空间的大小。具体的替换规则有:
(1)直接替换
将原名称字符串的后N个字符替换成该字符串S,例如对于元数据名称“student ”,假如随机生成5(即N=5)位字符串是“siehs”,则将原5位的字符串替换成该字符串,则随机化为stsiehs。
(2)追加字符串
将生成的随机字符串S追加到原名称后面,但考虑到原名称长度不一,为了后续随机化操作的方便性,加入特殊分隔符,如下划线“_”再进行追加。例如“student ”,则随机化为“student_siehs”。
(3)随机替换
先遍历元数据名称字符串,选取随机位置,将该位置的字符用S中的一个随机字符替换,一次替换确定替换一个随机位置的字符,经过N次修改即可实现随机位置的替换。
元数据名称的随机化完成之后,将新的字符串存储到元数据文件中的相应元数据记录中。
之所以设计三种替换规则是考虑到元数据名称在实际应用系统中对应的字符串可能长也可能短。对于长度短的名称,可以采用追加字符串的规则;对于长字符串可以采用直接替换或随机替换。其目的既实现足够的随机性,又能够使得名称具有一定的辨别性,这样程序系统的开发维护人员仍可以直观地从替换后的名称知道最初的字段名。
3、元数据名称的修改
元数据名称在SQL注入防御模块随机化后,需要在数据库系统上执行更新命令,以便将这种随机化进行实现。具体实现方式根据数据库的类型所有不同,通过构造相应的SQL语句来实现,例如对于MySQL、Mongodb、Oracle分别采用如下的命令进行表名的修改。
:alter table old_table_name rename new_table_name
Mongodb: db.old_table_name.renameCollection(“new_table_name”);
Oracle:alter table old_table_namerename TO new_table_name
这里的old_table_name和new_table_name可以从元数据文件中获取。
4、Web服务端的脚本更新
Web服务端页面修改时,需要知道其中的语法规则以及修改的位置。思路上,首先读取页面文件,然后进行字段名和表名字符匹配,最后进行替换。但是在匹配过程中要充分考虑所需要修改的语句和其他不需要修改的语句中的变量。假设所需要修改的SQL语句中的表名为student,而脚本程序中其他位置如有定义名为 student的变量,此时的修改如果不加以区别,就会改动其他非相关语句,最终导致应用程序不可用。
为此,本发明使用正则表达式定义脚本中需要修改的元数据名称使用模式。正则表达式设计得越精细,定位就会越精准。例如,假设某个脚本文件中需要修改的地方为select * from student,那么正则表达式可以定义为”select\\s+\*from\\s+”+oldname,其中oldname是元数据名称的原有字符串。在匹配之前需要先获得该值,这可以从元数据文件中获取。
综合上述处理,对于Web脚本文件的具体处理过程是:
(1)读取元数据文件的内容;
(2)按行读取脚本文件;
(2)对每一行进行正则表达式匹配,若符合模式集定义的正则表达式,则对该脚本中的字符串进行修改,即将其中的元数据名称修改为新值,将修改的后的内容存到buffer;
(3)若不匹配,则直接将该字符串存入buffer,写入buffer的字符串维持原文件的格式,包括换行符等;
(4)当文件的每行读取处理完毕后,将buffer中的内容按顺序重新写入到文件中保存,即可完成更新。
5、Web端插件
Web端插件的主体功能是命令触发的,而命令是来自于SQL注入防御模块,这两者之间的命令传递通过网络通信实现即可,基于Socket编程可以达到该目的。
对于该插件而言,需要存储页面列表及元数据名称的使用模式。在存储结构设计上,使用文本文件的存储方式。文件结构如下(参见图4),文件中定义了若干个脚本文件区域,每个区域的一行以#开始,后续接着脚本文件的文件名。区域的其他部分则定义该文件中的每个元数据模式,即上述提到的正则表达式。
6、定时任务
定时任务在具体实现上可以结合程序语言提供的功能,例如对于Java语言来说,可以使用Timer和TimerTask两个类。Timer设置线程调度任务以供将来在后台线程中执行的功能。一个线程任务可以只执行一次,或者定期重复执行。TimerTask为定时器调用的线程任务,可以将修改数据库和Web脚本的任务设定为TimerTask,根据设置的时间间隔运用Timer定期调用TimerTask进行数据库和Web脚本的修改。
对于定时任务来说,还涉及到一个关键的参数,即元数据随机化的变化频次,虽然可以通过系统维护,由用户自行设定,但是作为安全性保障的重要参数,需要同时兼顾攻击者和正常用户的使用。若变化频次太慢,也就是两次修改的时间间隔过长,攻击者通过穷举的方法可能已经得到正确的表名或者字段名,完成了对数据库的注入破坏或者信息窃取;若变化频次太快,会导致单位时间内出现正常用户不能访问的次数会过多,影响正常访问。该参数可以在实际使用中结合用户体验和SQL注入攻击发生现象进行适当调整。
参考文献
[1] 张阔, 李珍珍, 姬倩倩. 基于sql注入浅析维护数据库安全的策略[J]. 信息系统工程, 2017(2):76-76.
[2] 吴斌, 刘循. SQL注入攻击及漏洞检测防范技术[J]. 网络安全技术与应用,2017(1):76-78.
[3] 胡索荣, 叶晓俊, 彭勇,等. 数据库安全深度防护模型的设计和实现[J]. 计算机研究与发展, 2009, 46(s2):474-479.
[4] 王湘渝, 刘豪. SQL注入攻击及其防范技术研究[J]. 网络安全技术与应用,2009(9):62-63.
[5] 黄锋, 吴华瑞. 基于J2EE应用的SQL注入分析与防范[J]. 计算机工程与设计,2012, 33(10):3767-3771.
[6] 吕中秋, 魏波. SQL服务器注入攻击的主动防御技术研究[J]. 信息与电脑:理论版, 2013(12):30-31.
[7] 王云, 郭外萍, 陈承欢. Web项目中的SQL注入问题研究与防范方法[J]. 计算机工程与设计, 2010, 31(5):976-978.
[8] 王伟平, 李昌, 段桂华. 基于正则表示的SQL注入过滤模块设计[J]. 计算机工程, 2011, 37(5):158-160.。
Claims (9)
1.一种基于数据库结构随机变化的SQL注入防御方法,其特征在于,具体步骤为:
首先,设置合适的参数随机变化的时间间隔,设置元数据名称命名规则,增大名字空间;
然后,对数据库中的关键元数据名称进行主动、随机变化,并将这种变化与Web端的应用程序进行同步,从而使得整个数据库应用系统的元数据名称在一定的参数空间内随机变化,增大SQL注入的攻击者在元数据名称猜测上的难度,有效降低SQL注入攻击成功概率,并减小随机变化过程中对正常用户带来的不良影响。
2.一种基于数据库结构随机变化的SQL注入防御系统,其特征在于,主体包括SQL注入防御模块及Web端插件;其中,SQL注入防御模块通过普通的数据库连接器与数据服务器建立连接,并执行一些元数据操作命令,该模块用于执行元数据和系统参数的管理维护、元数据名称的随机化、Web服务端的脚本更新、定时任务,以及与数据库服务器和Web服务器的命令交互;Web端插件是一个执行机构,接收来自SQL注入防御模块发送的命令,并根据命令执行相关动作。
3. 根据权利要求2所述的SQL注入防御系统,其特征在于,所述SQL注入防御模块具体功能如下:
(1)元数据和系统参数的管理、维护
数据库服务器中有一些关键的表名、字段名,通常是SQL注入攻击的对象;这些信息在SQL注入防御模块中事先登记,并根据具体安全态势进行维护;
除此以外,还有一些涉及系统性能的参数也事先维护并管理,参数这些主要有:元数据随机化的名字空间命名规则、元数据随机化的变化频次、Web端涉及元数据的页面以及页面元数据名称使用模式、两种服务器的连接参数,包括IP地址、连接用户信息;
(2)元数据名称的随机化
根据设定的元数据及其名字空间命名规则,随机产生新的名字,并将这种改变在数据库服务器上进行实时生效;
(3)Web服务端的脚本更新
数据库元数据名称的修改也同时影响到Web服务端的相关页面中的脚本代码,因此需要进行同步修改,以保证用户的正常使用;脚本更新是基于系统参数管理中所设定的页面列表以及页面元数据名称使用模式,从而快速地定位需要更新的所有脚本;
在定位到需要修改的脚本位置后,进行脚本修改,其过程是将脚本中所包含的元数据名称替换成为新名称;实际的修改动作是发生在Web服务器上,是由SQL注入防御模块向驻留在Web服务器中的Web端插件发送命令,从而触发更新动作的执行;
(4)定时任务
通过定时器根据设定的元数据名称随机化的变化频次,启动定时任务;在定时任务中完成上述的元数据名称的随机化、Web服务端的脚本更新两个功能。
4. 根据权利要求2所述的SQL注入防御系统,其特征在于,所述Web端插件的功能如下:
(a) 接收页面列表及元数据名称使用模式
接收SQL注入防御模块中所维护的页面列表,这些页面都是需要进行脚本修改的;在接收到页面列表后,该插件在本地生成一个文件,保存这些页面列表;页面列表中的每个项即是存储于Web服务器的页面文件(含路径);
同时每个页面对应一些涉及元数据名称使用的模式,接收到这些模式后,该插件也将这些模式存储在本地文件中;
(b) 修改元数据名称使用模式
SQL注入防御模块发送修改名称的命令,表示通知该插件执行脚本的修改,将所有涉及到的元数据名称修改为新的名称;修改命令中携带有元数据标识及对应的名称。
5.根据权利要求3所述的SQL注入防御系统,其特征在于,SQL注入防御模块的处理流程为:由定时器调度;当定时任务开始后,依次进行数据库的连接、元数据随机化、Web服务端的脚本更新,之后就结束本次定时任务,等待下一次任务启动。
6.根据权利要求4所述的SQL注入防御系统,其特征在于,Web端插件的处理流程为:根据它所接收的不同命令而进行处理的;主要的命令有三种,当页面列表及元数据名称模式设置时,该插件只将这些信息存储起来;当接收到修改元数据名称使用模式的命令时,则根据存储的页面列表及模式,将页面中指定的元数据模式替换成为修改命令所携带的参数,完成本次修改后,再返回等待命令;当接收到的是停止接收命令时,停止插件的监听功能。
7.根据权利要求3所述的SQL注入防御系统,其特征在于,元数据名称的随机化生成规则符合随机性、辨别性以及统一性,设计规则采用随机字符替换法,包括直接替换、追加字符串、以及随机替换三种。
8.根据权利要求4所述的SQL注入防御系统,其特征在于,使用正则表达式定义Web端的脚本文件中需要修改的元数据名称使用模式。
9.根据权利要求4所述的SQL注入防御系统,其特征在于,元数据名称使用模式的存储结构设计上,使用文本文件的存储方式;文件中定义若干个脚本文件区域,每个区域的一行以#开始,后续接着脚本文件的文件名;区域的其他部分则定义该文件中的每个元数据模式,即正则表达式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710487275.6A CN107392014B (zh) | 2017-06-23 | 2017-06-23 | 基于数据库结构随机变化的sql注入防御方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710487275.6A CN107392014B (zh) | 2017-06-23 | 2017-06-23 | 基于数据库结构随机变化的sql注入防御方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107392014A true CN107392014A (zh) | 2017-11-24 |
CN107392014B CN107392014B (zh) | 2021-04-30 |
Family
ID=60333097
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710487275.6A Expired - Fee Related CN107392014B (zh) | 2017-06-23 | 2017-06-23 | 基于数据库结构随机变化的sql注入防御方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107392014B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109213821A (zh) * | 2018-09-25 | 2019-01-15 | 中国银行股份有限公司 | 数据处理方法及系统 |
CN109255612A (zh) * | 2018-08-14 | 2019-01-22 | 海南新软软件有限公司 | 一种数字货币私钥的备份方法、装置及终端 |
CN110457948A (zh) * | 2019-08-13 | 2019-11-15 | 中科天御(苏州)科技有限公司 | 一种基于存储指令随机化的动态数据防护方法及系统 |
CN111045679A (zh) * | 2019-01-09 | 2020-04-21 | 国家计算机网络与信息安全管理中心 | 一种sql注入的检测和防御方法、装置及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103392178A (zh) * | 2011-11-11 | 2013-11-13 | 日本电气株式会社 | 数据库加密系统、方法和程序 |
EP2778952A1 (en) * | 2011-11-11 | 2014-09-17 | NEC Corporation | Database device, method and program |
CN104636667A (zh) * | 2013-11-12 | 2015-05-20 | 梁佐云 | 基于云计算的注入漏洞检测系统及其注入方法 |
US20160224797A1 (en) * | 2015-02-04 | 2016-08-04 | Delphix Corporation | Creating Secure Virtual Databases Storing Masked Data |
CN106355094A (zh) * | 2016-07-08 | 2017-01-25 | 耿童童 | 一种基于语法变换的sql注入攻击防御系统及防御方法 |
CN106506462A (zh) * | 2016-10-18 | 2017-03-15 | 傅书豪 | 一种基于表单置乱的网站安全保护方法与装置 |
CN106506661A (zh) * | 2016-11-18 | 2017-03-15 | 浪潮软件集团有限公司 | 一种动态返回数据的方法、服务端及系统 |
CN106503557A (zh) * | 2016-07-08 | 2017-03-15 | 耿童童 | 基于动态变换的sql注入攻击防御系统及防御方法 |
-
2017
- 2017-06-23 CN CN201710487275.6A patent/CN107392014B/zh not_active Expired - Fee Related
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103392178A (zh) * | 2011-11-11 | 2013-11-13 | 日本电气株式会社 | 数据库加密系统、方法和程序 |
EP2778952A1 (en) * | 2011-11-11 | 2014-09-17 | NEC Corporation | Database device, method and program |
CN104636667A (zh) * | 2013-11-12 | 2015-05-20 | 梁佐云 | 基于云计算的注入漏洞检测系统及其注入方法 |
US20160224797A1 (en) * | 2015-02-04 | 2016-08-04 | Delphix Corporation | Creating Secure Virtual Databases Storing Masked Data |
CN106355094A (zh) * | 2016-07-08 | 2017-01-25 | 耿童童 | 一种基于语法变换的sql注入攻击防御系统及防御方法 |
CN106503557A (zh) * | 2016-07-08 | 2017-03-15 | 耿童童 | 基于动态变换的sql注入攻击防御系统及防御方法 |
CN106506462A (zh) * | 2016-10-18 | 2017-03-15 | 傅书豪 | 一种基于表单置乱的网站安全保护方法与装置 |
CN106506661A (zh) * | 2016-11-18 | 2017-03-15 | 浪潮软件集团有限公司 | 一种动态返回数据的方法、服务端及系统 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109255612A (zh) * | 2018-08-14 | 2019-01-22 | 海南新软软件有限公司 | 一种数字货币私钥的备份方法、装置及终端 |
CN109255612B (zh) * | 2018-08-14 | 2020-06-23 | 海南新软软件有限公司 | 一种数字货币私钥的备份方法、装置及终端 |
CN109213821A (zh) * | 2018-09-25 | 2019-01-15 | 中国银行股份有限公司 | 数据处理方法及系统 |
CN109213821B (zh) * | 2018-09-25 | 2022-03-15 | 中国银行股份有限公司 | 数据处理方法及系统 |
CN111045679A (zh) * | 2019-01-09 | 2020-04-21 | 国家计算机网络与信息安全管理中心 | 一种sql注入的检测和防御方法、装置及存储介质 |
CN111045679B (zh) * | 2019-01-09 | 2024-02-23 | 国家计算机网络与信息安全管理中心 | 一种sql注入的检测和防御方法、装置及存储介质 |
CN110457948A (zh) * | 2019-08-13 | 2019-11-15 | 中科天御(苏州)科技有限公司 | 一种基于存储指令随机化的动态数据防护方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN107392014B (zh) | 2021-04-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7095049B2 (ja) | ブロックチェーンシステム内におけるフィードバックを統合したエージェントベースチューリング完全なトランザクション | |
Wöhrer et al. | Design patterns for smart contracts in the ethereum ecosystem | |
EP2659370B1 (en) | Method and system for recovering a database | |
CN107392014A (zh) | 基于数据库结构随机变化的sql注入防御方法和系统 | |
Chakraborti et al. | ConcurORAM: High-throughput stateless parallel multi-client ORAM | |
US5826268A (en) | Secure multilevel object oriented database management system | |
CN106874461A (zh) | 一种工作流引擎支持多数据源配置安全访问系统及方法 | |
CN110225029A (zh) | 注入攻击检测方法、装置、服务器及存储介质 | |
US11275850B1 (en) | Multi-faceted security framework for unstructured storage objects | |
JP2008165432A (ja) | クエリ制御プログラム、クエリ制御装置およびクエリ制御方法 | |
CN103442016B (zh) | 基于网站指纹推送白名单的方法及系统 | |
JP4807364B2 (ja) | 情報管理装置 | |
CN111400279B (zh) | 数据操作方法、装置和计算机可读存储介质 | |
Knecht et al. | SATOS: Storage Agnostic Tokens over Opaque and Substructural Types | |
Anciaux et al. | A Tamper‐Resistant and Portable Healthcare Folder | |
Wang et al. | Research on SSTI attack defense technology based on instruction set randomization | |
Deng et al. | A Data Consistency Insurance Method for Smart Contract. | |
JP4937387B2 (ja) | 自動書き換えプログラムおよび自動書き換え装置 | |
CN113162890B (zh) | 自动攻击取证系统、方法、计算机可读介质及设备 | |
Bhamra | A Secure and Serverless Approach to Verification of Student Records | |
CN118567745A (zh) | 一种Vue项目配置方法、装置、电子设备及存储介质 | |
Sun | Understanding and Defending against the Security Threats on Mobile and IoT Devices | |
Magkoutis | An Automated Assessment of Smart Contract Vulnerabilities in the Ethereum Blockchain Using Open-Source Tools | |
CN118092972A (zh) | 热更新方法、装置、计算机设备和存储介质 | |
Chakraborti | Scalable High-Throughput Systems for Practical Access Privacy |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20210430 |