CN106549930A - 一种抵抗sql注入攻击的方法及系统 - Google Patents
一种抵抗sql注入攻击的方法及系统 Download PDFInfo
- Publication number
- CN106549930A CN106549930A CN201610678523.0A CN201610678523A CN106549930A CN 106549930 A CN106549930 A CN 106549930A CN 201610678523 A CN201610678523 A CN 201610678523A CN 106549930 A CN106549930 A CN 106549930A
- Authority
- CN
- China
- Prior art keywords
- prefix
- sql statement
- random
- random identification
- regular length
- 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.)
- Withdrawn
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1441—Countermeasures against malicious traffic
- H04L63/1466—Active attacks involving interception, injection, modification, spoofing of data unit addresses, e.g. hijacking, packet injection or TCP sequence number attacks
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种抵抗SQL注入攻击的方法及系统,包括:生成固定长度的随机标识;将所述随机标识作为前缀添加到Web程序中自带SQL语句之前;若数据库系统收到待执行SQL语句,则判断所述待执行SQL语句是否存在前缀,若不存在,则禁止其执行,否则提取待执行SQL语句的前缀;判断所述待执行SQL语句的前缀与所述随机标识是否相同,若相同则删除前缀并继续执行,否则禁止其执行。本发明所述技术方案能够有效检测和抵抗SQL注入攻击。
Description
技术领域
本发明涉及信息安全技术领域,尤其涉及一种抵抗SQL注入攻击的方法及系统。
背景技术
Web安全作为信息安全的一个重要分支,近年来一直是研究热点。随着操作系统和主机应用软件的安全性不断提高,攻击难度随之加大,更多的黑客会选择Web作为渗透目标系统的一个重要突破口。在众多的Web漏洞当中,SQL注入被OWASP(Open Web ApplicationSecurity Project,开放式Web应用程序安全项目)排在影响Web程序安全的第一位。
对抗SQL注入的方法有很多,首先,可以通过安全教育提高程序员的编码安全意识,使其使用安全的函数来处理用户输入,但是当代码量庞大时,总会产生疏忽。因此需要一种方法,能够自动的弥补这种由于人为失误导致的安全问题。
其次可以通过WAF(WebApplicationFirewall,Web应用防火墙)来抵御SQL注入攻击,但是WAF的工作原理是检查URL中是否存在黑名单上的关键字,这种安全机制本身就存在缺陷,可以作为一种辅助防御方法,但是现实中总会存在被黑客绕过的情况。
发明内容
针对上述技术问题,本发明所述的技术方案通过自动在SQL语句之前加入前缀,在数据库系统执行相关SQL语句之前判定其是否存在前缀,而前缀是否与预先加入的前缀相匹配,只有存在前缀并相匹配的SQL语句可以执行,否则禁止其执行。本技术方案整体自动化完成,不添加额外工作量;同时,避免了传统黑白名单机制相对滞后等问题,能够有效检测和抵抗SQL注入攻击。
本发明采用如下方法来实现:一种抵抗SQL注入攻击的方法,包括:
生成固定长度的随机标识;
将所述随机标识作为前缀添加到Web程序中自带SQL语句之前;
若数据库系统收到待执行SQL语句,则判断所述待执行SQL语句是否存在前缀,若不存在,则禁止其执行,否则提取待执行SQL语句的前缀;
判断所述待执行SQL语句的前缀与所述随机标识是否相同,若相同则删除前缀并继续执行,否则禁止其执行。
进一步地,所述生成固定长度的随机标识为:利用伪随机数生成器生成固定长度的数字作为随机标识。
进一步地,所述利用伪随机数生成器生成固定长度的数字作为随机标识,包括:获取系统时间或者进程ID作为随机种子;将随机种子作为输入参数交给随机函数执行;利用哈希函数将执行结果转换为固定长度的数字作为随机标识。
上述各方法中,还包括:
对所述随机标识加密,将加密后的密文作为前缀添加到Web程序中自带SQL语句之前;
提取待执行SQL语句的前缀后,对所述前缀进行解密,并判断解密后的前缀与加密前的随机标识是否相同,若相同则删除前缀并继续执行,否则禁止其执行。
本发明可以采用如下系统来实现:一种抵抗SQL注入攻击的系统,包括:
标识生成模块,用于生成固定长度的随机标识;
前缀安插模块,用于将所述随机标识作为前缀添加到Web程序中自带SQL语句之前;
前缀判定模块,用于当数据库系统收到待执行SQL语句时,则判断所述待执行SQL语句是否存在前缀,若不存在,则禁止其执行,否则提取待执行SQL语句的前缀;
前缀匹配模块,用于判断所述待执行SQL语句的前缀与所述随机标识是否相同,若相同则删除前缀并继续执行,否则禁止其执行。
进一步地,所述标识生成模块,用于利用伪随机数生成器生成固定长度的数字作为随机标识。
进一步地,所述标识生成模块,具体用于获取系统时间或者进程ID作为随机种子;将随机种子作为输入参数交给随机函数执行;利用哈希函数将执行结果转换为固定长度的数字作为随机标识。
上述各系统中:
所述前缀安插模块,具体用于对所述随机标识加密,将加密后的密文作为前缀添加到Web程序中自带SQL语句之前;
所述前缀匹配模块,具体用于提取待执行SQL语句的前缀后,对所述前缀进行解密,并判断解密后的前缀与加密前的随机标识是否相同,若相同则删除前缀并继续执行,否则禁止其执行。
综上,本发明给出一种抵抗SQL注入攻击的方法及系统,本发明所述技术方案通过预先在Web程序自带SQL语句之前添加随机标识作为前缀,当将SQL语句交给数据库系统执行之前,先判断SQL语句关键字之前是否有前缀,如果没有则认为该SQL语句是通过SQL注入攻击添加的,如果有则进一判断该前缀与预先设置的前缀是否相同,如果相同,则证明该SQL语句是合法的,否则证明这个前缀是攻击者伪造的,禁止该SQL语句执行。
有益效果为:本发明所述技术方案提供了新的发现和抵抗SQL注入攻击的方法及系统,通过判断SQL语句之前是否含有预设前缀来判断是否是合法SQL语句,从而有效识别通过注入添加的攻击指令;进一步,可以通过对前缀进行加解密处理,进而避免攻击者伪造前缀标签,即使攻击者预先知道系统通过添加标签的方法对抗SQL注入,也无法在注入的过程中添加合法的前缀标签,进而达到有效阻断SQL注入攻击的目的。
附图说明
为了更清楚地说明本发明的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的一种抵抗SQL注入攻击的方法实施例1流程图;
图2为本发明提供的一种抵抗SQL注入攻击的方法实施例2流程图;
图3为本发明提供的一种抵抗SQL注入攻击的系统实施例1结构图。
具体实施方式
本发明给出了一种抵抗SQL注入攻击的方法及系统实施例,为了使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明中技术方案作进一步详细的说明:
本发明首先提供了一种抵抗SQL注入攻击的方法实施例1,如图1所示,包括:
S101生成固定长度的随机标识;由于是固定长度,因此方便后期通过字符串操作获取前缀;
S102将所述随机标识作为前缀添加到Web程序中自带SQL语句之前;其中,可以在Web程序中找到自带的SQL语句,并在语句关键字前添加生成的前缀;
S103若数据库系统收到待执行SQL语句,则判断所述待执行SQL语句是否存在前缀,若不存在,则禁止其执行,否则提取待执行SQL语句的前缀;
其中,如果判断存在前缀则初步判定是系统生成的合法指令,待后续继续判断,如果不存在前缀,则表明这部分SQL指令是通过SQL注入攻击添加的,则禁止其执行;
S104判断所述待执行SQL语句的前缀与所述随机标识是否相同,若相同则删除前缀并继续执行,否则禁止其执行。
其中,如果待执行SQL语句的前缀与所述随机标识相同,则认为是系统合法生成的,允许其执行,如果不同,则说明该前缀是攻击者伪造的,立即禁止其执行。
优选地,所述生成固定长度的随机标识为:利用伪随机数生成器生成固定长度的数字作为随机标识。
优选地,所述利用伪随机数生成器生成固定长度的数字作为随机标识,包括:获取系统时间或者进程ID作为随机种子;将随机种子作为输入参数交给随机函数执行;利用哈希函数将执行结果转换为固定长度的数字作为随机标识。上述随机标识的生成方法可以保证随机标识的唯一性,同时保证随机标识具备固定长度,方便后期判断是提取方便。
上述各方法实施例中,还包括:
对所述随机标识加密,将加密后的密文作为前缀添加到Web程序中自带SQL语句之前;
提取待执行SQL语句的前缀后,对所述前缀进行解密,并判断解密后的前缀与加密前的随机标识是否相同,若相同则删除前缀并继续执行,否则禁止其执行。
本发明同时提供了一种抵抗SQL注入攻击的方法实施例2,如图2所示,包括:
S201生成固定长度的随机标识;
S202对所述随机标识加密,将加密后的密文作为前缀添加到Web程序中自带SQL语句之前;
S203若数据库系统收到待执行SQL语句,则判断所述待执行SQL语句是否存在前缀,若不存在,则禁止其执行,否则执行S204;
S204提取待执行SQL语句的前缀;
S205对所述前缀进行解密,并判断解密后的前缀与加密前的随机标识是否相同,若相同则删除前缀并继续执行,否则禁止其执行。
上述实施例选择对随机标识加密的原因在于:在判定SQL语句是系统合法语句还是攻击者通过注入添加的攻击指令的前提下,避免了攻击者通过伪造前缀进而躲避检测阻断的可能,进而有效抵抗SQL注入攻击。
优选地,所述生成固定长度的随机标识为:利用伪随机数生成器生成固定长度的数字作为随机标识。
优选地,所述利用伪随机数生成器生成固定长度的数字作为随机标识,包括:获取系统时间或者进程ID作为随机种子;将随机种子作为输入参数交给随机函数执行;利用哈希函数将执行结果转换为固定长度的数字作为随机标识。
本发明其次提供了一种抵抗SQL注入攻击的系统实施例1,如图3所示,包括:
标识生成模块301,用于生成固定长度的随机标识;
前缀安插模块302,用于将所述随机标识作为前缀添加到Web程序中自带SQL语句之前;
前缀判定模块303,用于当数据库系统收到待执行SQL语句时,则判断所述待执行SQL语句是否存在前缀,若不存在,则禁止其执行,否则提取待执行SQL语句的前缀;
前缀匹配模块304,用于判断所述待执行SQL语句的前缀与所述随机标识是否相同,若相同则删除前缀并继续执行,否则禁止其执行。
优选地,所述标识生成模块,用于利用伪随机数生成器生成固定长度的数字作为随机标识。
优选地,所述标识生成模块,具体用于获取系统时间或者进程ID作为随机种子;将随机种子作为输入参数交给随机函数执行;利用哈希函数将执行结果转换为固定长度的数字作为随机标识。
上述各系统实施例中:
所述前缀安插模块,具体用于对所述随机标识加密,将加密后的密文作为前缀添加到Web程序中自带SQL语句之前;
所述前缀匹配模块,具体用于提取待执行SQL语句的前缀后,对所述前缀进行解密,并判断解密后的前缀与加密前的随机标识是否相同,若相同则删除前缀并继续执行,否则禁止其执行。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同或相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
上述实施例给出了一种抵抗SQL注入攻击的方法及系统实施例,与传统对抗SQL注入攻击的方法不同,并不是通过黑白名单的形式进行匹配判断,而是通过对Web程序中自带SQL语句预置前缀,并在数据库系统执行相关SQL语句时,进行匹配判断是否存在预置前缀的手段来判断是否是系统合法语句,若待执行SQL语句不包含前缀,或者包含的前缀与预置前缀不符,则判定为非法语句并禁止其执行。本发明上述实施例克服了传统方法不能有效阻断SQL注入攻击,并且存在一定滞后性的问题,进而有效降低SQL注入攻击对系统造成的危害。
以上实施例用以说明而非限制本发明的技术方案。不脱离本发明精神和范围的任何修改或局部替换,均应涵盖在本发明的权利要求范围当中。
Claims (8)
1.一种抵抗SQL注入攻击的方法,其特征在于,包括:
生成固定长度的随机标识;
将所述随机标识作为前缀添加到Web程序中自带SQL语句之前;
若数据库系统收到待执行SQL语句,则判断所述待执行SQL语句是否存在前缀,若不存在,则禁止其执行,否则提取待执行SQL语句的前缀;
判断所述待执行SQL语句的前缀与所述随机标识是否相同,若相同则删除前缀并继续执行,否则禁止其执行。
2.如权利要求1所述的方法,其特征在于,所述生成固定长度的随机标识为:利用伪随机数生成器生成固定长度的数字作为随机标识。
3.如权利要求2所述的方法,其特征在于,所述利用伪随机数生成器生成固定长度的数字作为随机标识,包括:获取系统时间或者进程ID作为随机种子;将随机种子作为输入参数交给随机函数执行;利用哈希函数将执行结果转换为固定长度的数字作为随机标识。
4.如权利要求1-3任一所述的方法,其特征在于,还包括:
对所述随机标识加密,将加密后的密文作为前缀添加到Web程序中自带SQL语句之前;
提取待执行SQL语句的前缀后,对所述前缀进行解密,并判断解密后的前缀与加密前的随机标识是否相同,若相同则删除前缀并继续执行,否则禁止其执行。
5.一种抵抗SQL注入攻击的系统,其特征在于,包括:
标识生成模块,用于生成固定长度的随机标识;
前缀安插模块,用于将所述随机标识作为前缀添加到Web程序中自带SQL语句之前;
前缀判定模块,用于当数据库系统收到待执行SQL语句时,则判断所述待执行SQL语句是否存在前缀,若不存在,则禁止其执行,否则提取待执行SQL语句的前缀;
前缀匹配模块,用于判断所述待执行SQL语句的前缀与所述随机标识是否相同,若相同则删除前缀并继续执行,否则禁止其执行。
6.如权利要求5所述的系统,其特征在于,所述标识生成模块,用于利用伪随机数生成器生成固定长度的数字作为随机标识。
7.如权利要求6所述的系统,其特征在于,所述标识生成模块,具体用于获取系统时间或者进程ID作为随机种子;将随机种子作为输入参数交给随机函数执行;利用哈希函数将执行结果转换为固定长度的数字作为随机标识。
8.如权利要求5-7任一所述的系统,其特征在于:
所述前缀安插模块,具体用于对所述随机标识加密,将加密后的密文作为前缀添加到Web程序中自带SQL语句之前;
所述前缀匹配模块,具体用于提取待执行SQL语句的前缀后,对所述前缀进行解密,并判断解密后的前缀与加密前的随机标识是否相同,若相同则删除前缀并继续执行,否则禁止其执行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610678523.0A CN106549930A (zh) | 2016-08-17 | 2016-08-17 | 一种抵抗sql注入攻击的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610678523.0A CN106549930A (zh) | 2016-08-17 | 2016-08-17 | 一种抵抗sql注入攻击的方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106549930A true CN106549930A (zh) | 2017-03-29 |
Family
ID=58367886
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610678523.0A Withdrawn CN106549930A (zh) | 2016-08-17 | 2016-08-17 | 一种抵抗sql注入攻击的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106549930A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107222494A (zh) * | 2017-06-28 | 2017-09-29 | 上海红阵信息科技有限公司 | 一种sql注入攻击防御组件及方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102763368A (zh) * | 2009-12-23 | 2012-10-31 | 思杰系统有限公司 | 用于跨站点伪造保护的方法和系统 |
CN104123497A (zh) * | 2014-07-04 | 2014-10-29 | 北京神州绿盟信息安全科技股份有限公司 | 一种防御sql注入的方法、装置及系统 |
WO2015109326A1 (en) * | 2014-01-20 | 2015-07-23 | Prevoty, Inc. | Sol query constraint solving |
CN104821949A (zh) * | 2015-05-08 | 2015-08-05 | 杭州平民软件有限公司 | 基于签名的sql防篡改保护方法 |
CN103310160B (zh) * | 2013-06-20 | 2016-08-10 | 北京神州绿盟信息安全科技股份有限公司 | 一种防止网页被篡改的方法、系统及装置 |
-
2016
- 2016-08-17 CN CN201610678523.0A patent/CN106549930A/zh not_active Withdrawn
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102763368A (zh) * | 2009-12-23 | 2012-10-31 | 思杰系统有限公司 | 用于跨站点伪造保护的方法和系统 |
CN103310160B (zh) * | 2013-06-20 | 2016-08-10 | 北京神州绿盟信息安全科技股份有限公司 | 一种防止网页被篡改的方法、系统及装置 |
WO2015109326A1 (en) * | 2014-01-20 | 2015-07-23 | Prevoty, Inc. | Sol query constraint solving |
CN104123497A (zh) * | 2014-07-04 | 2014-10-29 | 北京神州绿盟信息安全科技股份有限公司 | 一种防御sql注入的方法、装置及系统 |
CN104821949A (zh) * | 2015-05-08 | 2015-08-05 | 杭州平民软件有限公司 | 基于签名的sql防篡改保护方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107222494A (zh) * | 2017-06-28 | 2017-09-29 | 上海红阵信息科技有限公司 | 一种sql注入攻击防御组件及方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106599628B (zh) | 一种基于模块钩子的Python字节码文件保护方法 | |
Binsalleeh et al. | On the analysis of the zeus botnet crimeware toolkit | |
CN104318135B (zh) | 一种基于可信执行环境的Java代码安全动态载入方法 | |
CN105187389B (zh) | 一种基于数字混淆加密的网页访问方法及系统 | |
Qian et al. | Research of SQL injection attack and prevention technology | |
KR101900841B1 (ko) | 이동 단말기의 애플리케이션 프로그램 패스워드를 보호하는 방법 및 장치 | |
Kholia et al. | Looking inside the (Drop) box | |
CN102316112A (zh) | 网络应用中的密码验证方法及系统 | |
US11379564B2 (en) | Network and device security system, method, and apparatus | |
Rahimian et al. | On the reverse engineering of the citadel botnet | |
CN104573549A (zh) | 一种可信的数据库机密性保护方法及系统 | |
CN106506462B (zh) | 一种基于表单置乱的网站安全保护方法与装置 | |
CN109165531B (zh) | 一种aes掩码方法、电子设备及存储介质 | |
CN106789894A (zh) | 基于三cpu架构的跨网安全数据传输设备及其实现方法 | |
CN108898008A (zh) | 应用程序的运行方法和装置 | |
Praitheeshan et al. | Attainable hacks on Keystore files in Ethereum wallets—A systematic analysis | |
Temeiza et al. | A novel method for preventing SQL injection using SHA-1 algorithm and syntax-awareness | |
CN104376270A (zh) | 一种文件保护方法及系统 | |
WO2015180459A1 (zh) | 一种基于多叉树查找的Web系统许可证验证方法 | |
US7779269B2 (en) | Technique for preventing illegal invocation of software programs | |
CN108092937B (zh) | 防止Web系统越权访问的方法及系统 | |
CN106549930A (zh) | 一种抵抗sql注入攻击的方法及系统 | |
CN105468969A (zh) | 一种提升杀毒应用程序安全性的方法及系统 | |
CN110457872B (zh) | 一种Android App应用资源的隐藏加固方法 | |
Koujalagi et al. | The wannacry ransomeware, a mega cyber attack and their consequences on the modern india |
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 | ||
CB02 | Change of applicant information |
Address after: 100080 Beijing city Haidian District minzhuang Road No. 3, Tsinghua Science Park Building 1 Yuquan Huigu a Applicant after: Beijing ahtech network Safe Technology Ltd Address before: 100080 Zhongguancun Haidian District street, No. 14, layer, 1 1415-16 Applicant before: Beijing Antiy Electronic Installation Co., Ltd. |
|
CB02 | Change of applicant information | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20170329 |
|
WW01 | Invention patent application withdrawn after publication |