CN106549930A - 一种抵抗sql注入攻击的方法及系统 - Google Patents

一种抵抗sql注入攻击的方法及系统 Download PDF

Info

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
Application number
CN201610678523.0A
Other languages
English (en)
Inventor
王鹏
李柏松
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Antiy Electronic Equipment Co Ltd
Original Assignee
Beijing Antiy Electronic Equipment Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Antiy Electronic Equipment Co Ltd filed Critical Beijing Antiy Electronic Equipment Co Ltd
Priority to CN201610678523.0A priority Critical patent/CN106549930A/zh
Publication of CN106549930A publication Critical patent/CN106549930A/zh
Withdrawn legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • H04L63/1466Active 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注入攻击的方法及系统
技术领域
本发明涉及信息安全技术领域,尤其涉及一种抵抗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语句的前缀后,对所述前缀进行解密,并判断解密后的前缀与加密前的随机标识是否相同,若相同则删除前缀并继续执行,否则禁止其执行。
CN201610678523.0A 2016-08-17 2016-08-17 一种抵抗sql注入攻击的方法及系统 Withdrawn CN106549930A (zh)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107222494A (zh) * 2017-06-28 2017-09-29 上海红阵信息科技有限公司 一种sql注入攻击防御组件及方法

Citations (5)

* Cited by examiner, † Cited by third party
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 北京神州绿盟信息安全科技股份有限公司 一种防止网页被篡改的方法、系统及装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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