学位论文 > 优秀研究生学位论文题录展示
Query Tokenization Approach to the Detection and Prevention of SQL Injection Attacks
作 者: NTAGWABIRA Lambert
导 师: KANG Song Lin
学 校: 中南大学
专 业: Computer Application Technology
关键词: SQL注入 SQL注入式攻击 查询标记
分类号: TP311.13
类 型: 硕士论文
年 份: 2011年
下 载: 21次
引 用: 0次
阅 读: 论文下载
内容摘要
本文选题为“一种检测与预防SQL注入式攻击的查询标记方法”。该选题来源于以下实际背景:当前的数据库系统的安全正在受到与日俱增的未经许可的SQL注入式攻击的侵犯。科技日新月异,攻击手段也层出不穷。由于攻击者总是不断地寻找出新的攻击方式,因此现有的SQL注入攻击的保护方法总是不够完备。多年来,数据安全一直受到来自世界各地的攻击者的威胁。虽然数据安全的研究历来就有,但数据安全始终得不到完全保障的事实表明,当代研究者还是应该把数据库安全问题作为首要的研究对象。本文研究的目的是:应用“查询标记”的技术方法进行SQL注入式攻击的自动化检测和预防。本论文讨论了SQL注入式攻击的相关技术,如下:网络应用程序可以通过获取用户指令从而相应的通过SQL语句查询数据库信息。通过让SQL语句注入含有恶意代码的查询语句,可以轻而易举的伪装成普通用户的请求,进而进入数据库,这样攻击者就可以任意修改数据库内容,对数据安全造成巨大的威胁。如何防止以上情况的发生呢?研究人员注意到,SQL语句中有两种变量:数字和字符串。SQL标准规定:“字符串变量可以被单独引用,而数字不可以”。根据SQL注入式攻击的结构,攻击者必须在输入语句中输入至少包含一个单引号或者两个破折号的输入语句才能成功的侵入目标系统。也就是说,输入的攻击句中必须有至少一个字符。因此,攻击者并不能成功攻击一个只接受数字输入语句的目标系统。许多研究者提出的相应解决方法都依照此理论进行。然而,这些研究都把注意力放在以上理论上,而没有深入研究其他理论,因此是不全面的。现有的研究或多或少地包括一些实际应用的缺点和不足,比如缺少实际应用支持,不能全面检测到所有攻击范围。此外,研究人员也对预处理指令,输入语句检验,输出编码等在实际中的应用的进行了详实的讨论。然而,虽然有很多研究成果,但是基于上述常用理论所导致的不足也是显而易见的。因此,本文另辟蹊径,创新性地提出和以上方法不同的研究思路。它的理论思想是对于首次查询内容进行研究,以及对疑似注入攻击的查询和原始查询进行比对,检测SQL是否受到攻击者的注入攻击。通常,当用户输入验证时,SQL注入攻击者一定要在其中嵌入一个单引号,双破折号或两个单引号或双破折号,以完成一次成功的攻击。所有SQL注入的对象是数据库,之所以能成功攻击数据库,其缺陷不在于数据库服务器,或者是不够完整的授权体系。相反,它的缺陷取决于脚本的编写方式。换句话说,这种类型的攻击往往是程序员的错误,而不是SQL服务器错误的结果。我们所研究的核心问题就是要寻找一种方法,来检测用户所输入的验证是否加入了额外的用于SQL注入式攻击的语句结构。为了解决SQL注入式攻击带来的问题,许多学者提出了大量的解决方法和概念模型,然而,这些方法和模型大多是不完备的或者很难应用到具体情况的。所以本文基于以下事实来解决SQL注入式攻击的潜在问题:每个输入区域的输入内容受两个单引号限制,并且输入的单引号的数量必须是输入的字符串数量的两倍。本文的核心讨论内容之一:运用查询标记数量等于用户在查询时输入的字符串数量这一原理,标记查询内容。而本文中所谓的查询标记,是指把一个查询划分为不同部分的过程。标记的数量通过把一个查询中的单引号数除以二取得。当单引号的数量除以二除不尽时,那么此查询就被定义为语法错误,进而此次查询不能被数据库系统接受。本文的核心讨论内容之二:作为一个解决SQL注入式攻击的方法,本文提出了查询标记的注入攻击检测和预防机制模型,并根据此模型实现了两种具体的算法。第一个算法是通过单引号数量得到查询标记数量的程序算法。在这个算法中,查询中的标记数量等于查询的单引号数除以二。当单引号数为奇数,查询不能被执行。根据这一算法,标记的数量将与输入接受字符串的的数目相同。单引号数除以二,就可以获取标记的数量,因为查询的字符串输入受到一个在输入内容开头的单引号和一个在输入内容结尾的一个单引号的限制。第二种方法是注入攻击检测。注入检测算法标记实时查询用户输入内容,并对比此类标记获得的数量与原始查询内容获得的标记数量。该注入检测是从原始查询发起的或者查询包含用户输入的不同的标记数目。根据这一算法,注入攻击时也查询包含的双破折号。本文使用Java实现了上述两个算法,主要涉及了三大块内容:查询标记,标记宏表和注入检测。查询标记的功能是实现标记化查询功能。标记宏表的功能是创建一个记录原始查询取得的标记数和其他注入检测所需的信息文件夹并分类列好。标记宏表在应用程序运行时将信息保存并被加载到计算机内存。该注入攻击检测的宏比较了两种查询(原始查询和用户输入的实时查询)的标记数,并判定是否含有注入式攻击。为了测试本文提出的方法是否可行,特开发了一个学生成绩管理系统,以便模拟真实的SQL注入式攻击。学生成绩管理系统-SRS是一个完全基于Web的学生管理系统,旨在方便学校学生、教师和学术人员从数据库信息中检索所需要的信息。学生成绩管理系统主要由学生模块,员工模块,教师模块,课程模块,注册模块,成绩模块,报表模块和安全模块构成。SQL注入检测和预防技术应用于每一个模块中,并在当一个用户需要从数据库中检索信息时实行自动加载。本文评估考虑了常用的SQL注入攻击的四种攻击方法,并且根据这四种攻击方法设计了如下类型的性能检测和预防方法:·只使用单引号。如a’or‘1’=‘1。·攻击同时使用单引号和双破折号。本例中是a’;--·攻击只使用双破折号。如1”;--.·既不用单引号也不用双破折号的攻击。如l or 1=1第四个例子用于数据库中数据是数字情况下的攻击。攻击者可以使用四种攻击方法中的一种攻击方法,也可以使用多种攻击方法。容易遭受攻击者成功进行注入式攻击的区域,我们称之为脆弱区域。为了测试注入检测技术的性能,本文计算了脆弱区域的数量。本文中,将所有脆弱区域分为两大类,字符串类和数字类。通过检测,在学生成绩管理系统中,发现了167处脆弱区域,包括37个应该输入数字的脆弱区域和130个应该输入字符串的脆弱区域。当试图进行SQL注入攻击时,我们对运用以上四种攻击方法的所有可能攻击进行了不同组合。实验发现,对字符串输入脆弱区域,有520种可能的组合攻击方式。即130X4。对于数字输入的脆弱区域,有148种可能的组合攻击方式,这个数字是37X4。在测试阶段,当查询标记被禁用时,在所有字符串区域总共520种组合攻击方式里,390种成功地进行了字符串输入的注入式攻击,而在数字区域总共148种组合攻击方式里,只有37种成功地进行了数字输入的注入式攻击。当查询标记程序启用时,字符串区域总共520种组合攻击方式进行的注入式攻击全部被拦截,因此易受攻击字符串区域攻击成功率是0/520。同时,数字区域总共148种组合攻击方式进行的注入式攻击中,111种被拦截,这意味着易受攻击数字区域攻击成功率为37/148。最终实验结果显示,查询标记程序关闭时,学生成绩管理系统SRS受攻击的程度高达63.92%,而当查询标记程序被启用时SRS受攻击的概率最多只有5.54%。这表明,程序标记程序很好地保护了SRS系统,其作用是很明显的。而如果想把这个在查询标记程序启用时受到攻击的概率5.54%降到零,则可通过增加其他安全方法,比如输入验证,加以完全消除。
|
全文目录
Abstract 6-7 摘要 7-11 Dedication 11-12 Acknowledgements 12-15 List of abbreviations 15-16 List of Tables 16-17 List of Figures 17-18 Chapter 1 Introduc tion 18-29 1.1 Motivation 18-19 1.2 Research Objectives 19-20 1.2.1 Problem Description 19 1.2.2 Research goals 19-20 1.3 Introduction to SQL Injection Attacks 20-28 1.3.1 SQL Injection Overview 20-26 1.3.2 Understanding database vulnerability to SQL Injection Attack 26-28 1.4 Contribution of this Thesis 28 1.5 Organization of the Thesis 28-29 Chapter 2 Theory basis and contribution of previous researches to our research 29-40 2.1 Introduction 29 2.2 SQL Injection Attacks Detection and Prevention Overview 29-30 2.3 Previous researches contribution to the detection and prevenion of SQL Injection Attacks 30-38 2.3.1 Solutions based on best practice coding 30-35 2.3.2 Solutions based on learning from the first query executed 35-36 2.3.3 Partial solutions 36-38 2.4 Previous researches assistance to my research 38-39 2.5 Summary 39-40 Chapter 3 Query Tokenization approach to the detection and prevention of SQLInjection Attacks 40-54 3.1 Introduction 40 3.2 SQL Query Overview 40-43 3.3 Tokenization 43-44 3.4 Query Tokenization and Injection Detection Algrithms 44-53 3.4.1 Query Tokenization Algorithm 44-49 3.4.2 Injection detection process 49-53 3.5 Summary 53-54 Chapter 4 Implementation of query tokenization to detect and prevent SQL InjectionAttacks 54-80 4.1 Introduction 54 4.2 SRS Descirption 54-56 4.3 SRS Architecture, design patterns and modeling language 56-63 4.3.1 SRS Architecture 56-57 4.3.2 Design Pattern 57-60 4.3.3 Unified Modeling Language (UML) 60-63 4.4 SRS database 63-65 4.4.1 SRS Entity Relationship Diagram 64-65 4.5 Our approach implementation using java 65-71 4.5.1 Query Tokenizer 66-67 4.5.2 QueryEntry 67-68 4.5.3 TokensHashTable 68-69 4.5.4 TableBuilder 69-70 4.5.5 InjectionDetector 70-71 4.6 SQL Injection detection and prevention Integrated in SRS 71-76 4.6.1 Screenshots 73-76 4.7 Research Result 76-78 4.8 Summary 78-80 Chapter 5 Conclusion and Future Work 80-83 5.1 Conclusion 80-81 5.2 Future works 81-83 References 83-87 Publications 87
|
相似论文
- 双层防御SQL注入攻击的方法,TP393.08
- 实时随机SQL注入攻击检测方法的研究与应用,TP393.08
- Web监控与网页防篡改系统的设计与实现,TP393.092
- 网站评估渗透系统的研究与实现,TP393.092
- SQL注入检测方法的研究与实现,TP309
- Web安全与入侵检测技术的研究,TP393.08
- Web安全扫描仪的设计与实现,TP393.08
- Web安全检测技术研究与方案设计,TP393.08
- Web应用安全漏洞扫描工具的设计与实现,TP393.08
- SQL注入攻击防御方法研究,TP393.08
- 针对Oracle数据库的SQL注入攻击的研究,TP311.13
- 一种自动SQL注入攻击检测与利用系统的研究实现,TP311.13
- 录井数据访问层中SQL注入检测技术的研究,TP311.13
- WEB应用安全漏洞挖掘的研究与实现,TP393.08
- 基于网络爬虫的SQL注入与XSS漏洞挖掘,TP393.08
- 多功能SQL注入检测系统的实现及攻击防范方法研究,TP393.08
- SQL注入及SQL Server的安全性研究,TP311.138
- 远程渗透测试中的SQL注入攻击技术研究,TP393.08
- 网络数据库的加密技术研究与应用,TP393.08
- B/S模式宣传主题网站设计和安全性探讨,TP393.092
中图分类: > 工业技术 > 自动化技术、计算机技术 > 计算技术、计算机技术 > 计算机软件 > 程序设计、软件工程 > 程序设计 > 数据库理论与系统
© 2012 www.xueweilunwen.com
|