编号200702412007024101南京航空航天大学金城学院毕业设计题目SQL注入攻击及防范措施研究学生姓名学号系部专业班级指导教师二〇一一年六月南京航空航天大学金城学院本科毕业设计(论文)诚信承诺书本人郑重声明:所呈交的毕业设计(论文)(题目:SQL注入攻击及防范措施研究)是本人在导师的指导下独立进行研究所取得的成果。尽本人所知,除了毕业设计(论文)中特别加以标注引用的内容外,本毕业设计(论文)不包含任何其他个人或集体已经发表或撰写的成果作品。作者签名:年月日(学号):毕业设计(论文)报告纸iSQL注入攻击及防范措施研究摘要随着网络应用的日益广泛,人们对网络安全的重视程度越来越高。与此同时,网络攻击也不断变换目标和攻击方法。现在,针对Web应用系统的攻击已经成为网络安全攻防新焦点。而在对Web应用系统的所有攻击中,SQL注入成为Web应用系统的严重安全隐患。通过该类型攻击,攻击者可以非法获得对Web应用程序数据库的无限制的访问权限,进一步得到企业和网络用户的机密信息,如银行账号、交易数据等等,给网络用户和企业造成了巨大的生活困扰和经济损失,这就迫切要求对SQL注入攻击实施全面防御。本文就是基于此目的,对SQL注入攻击和防范进行深入研究。本文首先阐述本课题的研究背景、现状和主要研究内容;接着研究了SQL注入攻击的技术背景和原理;最后,在现有防范方法的基础上提出了一些防范措施。关键词:SQL注入,网络安全,编码防范毕业设计(论文)报告纸iiSQLinjectionattacksandPreventiveMeasuresAbstractWithanincreasinglyextensiveapplicationofthenetwork,peopleattachmoreandmoreimportancetonetworksecurityAtthesametime,changestakeplaceinthetargetsandmethodsofnetworkattacks.Atpresent,attacksaimedatWebapplicationshavebecomeanewfocusofnetworksecurityattackanddefense.SQLinjectionhasbecomeaserioussecurityriskamongalltheattacksagainstWebapplication.TheSQLinjectionattackallowsanattackertoaccesstheunderlyingdatabaseunrestrictedly,andfurthermore,retrievestheconfidentialinformationofthecorporationandthenetworkuser,suchasbankaccountnumber,transactiondata,etc.SQLinjectioncancausegreatdistressandeconomiclossestoenterprisesandInternetusers,sothereisanurgentrequirementforcomprehensivedefensetoSQLinjectionattacks.Forthisreason,thispaperconductsanin-depthresearchonSQLinjectionanddefense.Firstly,thepaperelaboratesthebackgroundofthissubject,statusandmainresearchcontents.Secondly,itexploresthetechnicalbackgroundandtheoryoftheSQLinjectionattacks.Finally,thepaperputsforwardanovelpreventionmethodbasedonparsetreeoriginatingfromtheexistingdefensemethod.KeyWords:SQLInjection;NetworkSecurity;Codingdefense毕业设计(论文)报告纸iii目录摘要…………………………………………………………………………………………………………..…..iAbstract………………………………………………………………………………………………………….…ii第一章引言…………………………………………………………………………..…………………....…-1-1.1课题背景………………………………………………………………………………...-1-1.2课题研究意义……………………………………………………………...……………-1-1.3国内外研究现状………………………………………………………………………...-2-1.4课题研究内容…………………………………………………………………………...-3-第二章SQL语言及SQL注入环境分析..……………………………………………...……………....-4-2.1SQL语言简介……………………………………………………………………………-4-2.2SQL注入攻击网络背景…………………………………………………………………-4-2.3SQL注入概述……………………………………………………………………………-5-第三章SQL注入攻击的实现…………………………………………………………………………......-6-3.1SQL注入实现原理………………………………………………………………………-6-3.2SQL注入攻击流程………………………………………………………………………-7-3.3SQL注入实践……………………………………………………………………………-9-3.3.1ASP网页简介……………………………………………………………………-10-3.3.2注入环境搭建…………………………………………………………………...-10-3.3.3手工注入示例……………………………………………………………………-11-3.3.4工具注入示例…………………………………………………………………...-14-第四章SQL注入攻击防范措施……………………………………………………………...…………-18-4.1编码过程的防范……………………………………………………………………….-18-4.2数据库配置防范……………………………………………………………………….-19-4.2.1使用安全的账号和密码策略…………………………………………………...-19-4.2.2使用Windows身份验证模式…………………………………………………-19-4.2.3管理扩展存储过程……………………………………………………………...-19-毕业设计(论文)报告纸iv4.3操作系统配置防范…………………………………………………………………….-20-4.3.1选择安全的文件系统…………………………………………………………...-20-4.3.2对数据库文件进行权限设置与加密…………………………………………...-20-4.3.3对应用系统文件进行权限设置与加密………………………………………...-20-第五章总结与展望……………………………………………………………………………………..…-22-5.1总结…………………………………………………………………………………….-22-5.2展望…………………………………………………………………………………….-22-参考文献…………………………………………………………………………………………..…………-23-致谢………………………………………………………………………………………………………..….-24-毕业设计(论文)报告纸-1-第一章引言1.1课题背景当今世界,网络技术与信息技术高速发展,B/S模式具有界面统一,使用简单,易于维护,扩展性好,共享度高等优点,B/S模式越来越多的被应用于程序编写中。但由于B/S建立在广域网之上,对安全的控制能力较弱,且开发人员的水平和经验参差不齐,相当一部分的程序员在编写代码时没有对用户的输入数据或者是页面中所携带的信息进行必要的合法性判断。攻击者利用这个机会提交一段数据库查询代码,根据程序返回的结果,就可以获得一些数据库信息。1.2课题研究意义SQL注入攻击存在于大多数访问了数据库且带有参数的动态网页中。SQL注入攻击相当隐秘,表面上看与正常的Web访问没有区别,不易被发现,但是SQL注入攻击潜在的发生概率相对于其他Web攻击要高很多,危害面也更广。其主要危害包括:获取系统控制权、未经授权状况下操作数据库的数据、恶意篡改网页内容、私自添加系统账号或数据库使用者账号等。现在流行的数据库管理系统都有一些工具和功能组件,可以直接与操作系统及网络进行连接。当攻击者通过SQL注入攻击一个数据库系统,其危害就不只局限于存储在数据库中的数据,攻击者还可以设法获得对DBMS(数据库管理系统)所在的主机进行交互式访问,使其危害从数据库向操作系统、甚至整个网络蔓延。因此,我们不仅应当将SQL注入攻击看作是一个对存储在数据库上数据的威胁,而应当看作是对整个网络的威胁。毕业设计(论文)报告纸-2-1.3国内外研究现状国内对SQL注入攻击研究主要包括SQL注入攻击的原理和SQL注入攻击的关键技术。国内对SQL注入的检测与防范的研究主要集中于以下几个方面:(1)提出了各种各样的防范模型,如在客户端和服务器端进行检测的SQL注入攻击检测/防御/备案模型。(2)在服务端正式处理之前对提交数据进行合法性检查。(3)屏蔽出错信息,这样攻击者就不能从错误信息中获得关于数据库的信息。(4)对Web服务器进行安全设置,如去掉Web服务器上默认的一些危险命令。(5)不用字符串连接建立SQL查询,用存储过程编写代码减少攻击。(6)对包含敏感信息的数据加密,如在数据库中对密码加密存储等。国内对于SQL注入漏洞检测的研究还很少,大多数还是停留在攻击工具的层面上,很少将注入工具用于网站安全检测。国外学者对SQL注入检测与防范研究领域一般分为两大类。(1)漏洞识别(漏洞检测):这类防范主要研究识别应用程序中能导致SQL注入攻击的漏洞的位置。(2)攻击防御:这类方法可以进一步分为编码机制和防御机制。编码机制是一个很好实践的防范方法。SQL注入攻击产生的根本原因在于没有足够的验证机制,因而从编码方面防范攻击有很好的理论基础。编码机制有四种方法:第一,对输入类型检测。如果输入类型是数字型,那么限制其为数字型,这样就可以避免很多攻击,但该类检测机制存在很大局限性。第二,对输入内容编码。因为攻击者可以使用变换后的字符作为输入,而数据库将其转换之后作为SQL符号,可以在应用程序中对这些变化后的字符进行编码,而在数据库中将其还原为正常字符。第三,正模式匹配。通常可以写一段程序用于检测输入是否有不合法字符。第四,识别输入源。防御机制包括:(1)黑盒测试法(2)静态代码检测器(3)结合静态和动态的分析方法(4)新查询开发范例(5)入侵检测系统(6)代理过滤(7)指令集随机化方法(8)动态检测方法等。【8】毕业设计(论文)报告纸-3-1.4课题研究内容本课题介绍了SQL注入的背景、危害,研究了SQL注入的基本原理、注入的基本方法以及一些相关的防御措施。SQL注入的方法主要从手工注入和工具注入两方面进行实现,并从编程、数据库配置、操作系统配置防范等几方面来阐述如何防御SQL注入攻击。毕业设计(论文)报告纸-4-第二章SQL语言及SQL注入环境分析2.1SQL语言简介SQL全称是“结构化查询语言(StructuredQueryLanguage)”,最早是IBM的圣约瑟研究实验室为其关系数据库管理系统SYSTEMR开发的一种查询语言,它的前身是SQUARE语言。SQL