欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    毕业设计(论文)Web环境下SQL注入攻击与防御研究.doc

    • 资源ID:2395794       资源大小:1.50MB        全文页数:45页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    毕业设计(论文)Web环境下SQL注入攻击与防御研究.doc

    贵州民族大学本科毕业论文(设计)论文题目:Web环境下SQL注入攻击与防御研究 学 院(系): 计算机与信息工程学院 专 业: 计算机科学与技术 年 级: 2008 级 姓 名: 周 波 学 号: 200810020042 指导教师: 龚 琪 填表日期: 2102年 5 月 2012年 5 月Web环境下SQL注入攻击与防御研究周波摘要:随着计算机网络的发展,Web应用程序得到极为广泛的应用,其自身的安全也面临越来越多的威胁,结构化查询语言(SQL)注入攻击也是目前Web应用程序面临的主要安全威胁之一,因此对SQL注入攻击与防御对于理解和加强Web应用程序的安全具有十分重要的意义。SQL注入攻击是黑客对数据库进行攻击的常用手段之一。随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入。本文针对普遍存在的SQL注入攻击方法与防御技术进行探讨,总结了常见的利用SQL漏洞的方法,从代码层和系统层的角度介绍了避免SQL注入的各种策略和需要考虑的问题。包含所有与SQL注入相关的、当前已知的信息。本文所论述的内对于web程序开发者,系统管理人员,网络管理人员和安全人员具有一点的安全参考价值,这对于减小SQL注入攻击的危害,降低WEB系统的安全威胁,,提高web程序质量具有重要的意义。关键词: 注入攻击 注入漏洞 漏洞检测 代码解析SQL injection attack and defense in the Web environmentZhouboAbstract:With the development of computer networks, web applications extremely wide range of applications, its security is also facing increasing threats and Structured Query Language (SQL) injection attacks is facing web application security threats SQL injection attack and defense is of great significance for the understanding and enhance the security of web applications.SQL injection attacks are one of the common means of hacker attacks on the database. With the development of the B / S mode application development, more and more programmers to write applications that use this model. However, due to the uneven level and experience of the programmers, a large part of the programmer when writing code, not the legitimacy of the user input data to judge, to make the application a security risk. Users can submit a database query code, according to the procedure to return the results, get some data he would like to know, This is known as SQL Injection, namely SQL injection.Widespread SQL injection attack and defense technologies to explore, summed up the common use of SQL vulnerability, and a variety of strategies to avoid SQL injection and the issues to be considered from the perspective of the code and system layers. Contains all SQL injection, the currently known information.Discussed in this article within the web application developers, system administrators, network managers and security personnel, the safety reference value, which reduce the dangers of SQL injection attacks, to reduce the security threats of the WEB system, and improve the web application quality of great significance.Keywords: injection attacks injection vulnerability vulnerability detection code to parsing目 录第一章 绪论11.1课题背景11.2课题研究意义11.3国内外研究现状11.2 文本工作21.3 论文结构3第二章 Web工作原理与SQL数据库42.1 理解Web应用的工作原理42.1.1 什么是Web应用42.1.2 Web系统通信方式62.2 SQL数据库查询语言72.2.1 常见SQL查询语言82.2.2查询结构中常用知识92.3本章小结9第三章 SQL注入攻击测试103.1 SQL注入攻击的基本概念103.1.1 SQL注入攻击基本特点103.2 SQL注入产生原因113.2.1 构造动态字符串113.2.2 不安全的数据库配置173.3 本章小结18第四章 SQL注入的实现194.1 SQL注入流程194.2 寻找SQL注入194.3 确认SQL注入及SQL语句构造方式204.3.1内联SQL注入与终止式SQL注入204.4 SQL盲注234.4.1使用非主流通道244.5 利用操作系统264.6 SQL注入实践264.6.1 搭建SQL注入环境274.7 本章小结29第五章SQL注入攻击防御305.1 代码层防御305.1.1 使用参数化语句305.1.2 输入验证315.1.3输出编码335.1.4规范化335.1.5通过设计来避免SQL注入335.2平台层防御345.2.1使用运行时保护345.2.2确保数据库安全345.2.3最小化不必要信息的泄漏355.2.3提高Web服务器日志的冗余和时刻关注错误日志项目365.2.4操作系统的配置防范365.3本章小结36第六章 总结与展望376.1 总结376.2工作展望37成果申明38致谢39参考文献:40第一章 绪论1.1课题背景当今世界,网络技术与信息技术高速发展,Web应用程序具有界面统一,使用简单,易于维护,扩展性好,共享度高等优先。Web应用程序被应用到生活中的各个角落。但Web应用建立在广域网上,对安全的控制能力较弱。且开发人员的水平和经验参差不齐,相当一部分的程序员在编写代码时没有对用户的输入数据或者页面中所携带的信息进行必要的合法性判断。攻击者利用这个机会提交一段数据库查询代码,根据程序返回的结果,就可以或得一些数据库信息。1.2课题研究意义SQL注入攻击存在于大多数访问了数据库且带有参数的动态网页中,SQL注入攻击相当隐秘,表面上看与正常的Web访问没有区别,不易被发现,但是SQL注入攻击潜在的发生概率相对于其他Web攻击要高得多,危害面也更广。其主要危害包括:获取系统控制权、未经授权状态下操作数据库的数据、恶意篡改网页内容、私自添加账号或数据库使用者账号等。现在流行的数据库管理系统都有一些工具和功能组件,可以直接与操作系统及网络进行连接。当攻击者通过SQL注入攻击一个数据库系统,去危害就不只局限于存储在数据库中数据,攻击者还可以设法获得对DBMS所有的主机进行交互式访问,使其危害从数据库向操作系统、甚至整个网络蔓延。因此,我不仅应当将SQL注入攻击看作是一个对存储在数据库上数据的威胁,而应当看作是对整个网络的威胁。1.3国内外研究现状国内对SQL注入攻击研究主要包括SQL注入攻击的原理和SQ注入攻击的关键技术。国内对SQL注入的检测与防范的研究主要集中于以下几个方面:1. 提出各种各样的防范模型,如在客户端和服务器端进行检测的SQL注入攻击检测、防御、备案模型。2. 在服务器端正式处理之前对提交数据进行合法性检查。3. 屏蔽出错信息,这样攻击者就不能从错误中获取关于数据库的信息。4. 对Web服务器进行安全设置,如去掉Web服务器上默认的一些危险命令。5. 不用字符串连接建立SQL查询,用存储过程编写代码减少攻击。6. 对包含敏感信息的数据加密,如在数据库中对加密密码存储等。国内对SQL注入漏洞检测的研究还很少,大多数还停留在攻击工具的层面上,很少将注入工具用于网站安全检测。国外学者对SQL注入检测与防范领域一般分为两大类。1. 漏洞识别(漏洞检测):这类防范主要研究识别应用程序中能导致SQL注入攻击的漏洞位置。2. 攻击防御:这类方法可以进一步分为编码机制和防御机制。编码机制是一种很好实践的防范方法。SQL注入攻击产生的根本原因在于没有足够的验证机制,因而从编码方面防范攻击有很好的理论基础。编码机制有四种方法:第一,对输入类型检测,如果输入类型是数字型,那么限制为数值型,这样可以避免很多攻击,但该类型检测机制存在很大局限性。第二,对输入内容进行编码。因为攻击者可以使用变换后的字符作为输入,而在数据库中将其还原为正常字符。的三,正模式匹配,通常可以写一段程序用于检测数据输入是否有不合法字符。第四,识别输入源。防御机制包括:黑盒测试法、静态代码检测器、结合静态和动态的分析方法、新查询开发范例、入侵检测系统、代理过滤、指令集随机化方法、动态检测方法等。1.2 文本工作本文详细搜集和总结了SQL注入技术原理特征和方法,分别对SQL注入攻击技术和防御技术进行了详细的总结和归纳,在此基础上对攻击和防御方法进行相关案例剖解,主要工作如下:1. 完成了对Web环境的相关技术和理论研究本文研究了数据库管理系统以及Web应用程序方式的工作,利用一个典型的案例对SQL注入攻击进行分析,为SQL注入与防御的研究提供了坚实的理论基础。2. 给出了SQL注入攻击的防御策略及方法 通过对SQL注入攻击所实施的各种技术,给出了有效的防范方法,应用层防御和系统成防御,替换或删除敏感字符/字符串,屏蔽出错信息和在服务器端正式处理之前对提交的数据进行合法性检查。1.3 论文结构本论文主体部分共分五章,下面分别介绍每张的主要内容:第一章:绪论,给出了论文选题背景及选题意义,介绍了课题研究背景、研究意义,国内外研究现状,并对该论文的结构作简要说明。第二章: Web工作原理与SQL数据库。介绍了Web工作原理、通信方式与应用架构,SQL查询语言的简单介绍。第三章:SQL注入攻击测试。SQL注入的定义、特征、危害、攻击的成因,为理解SQL注入的生成过程提供一些背景知识第四章:SQL注入的实现。根据SQL注入攻击的步骤说明了一般的攻击技巧,并给出案例分析。第五章: SQL注入攻击防御。针对SQL注入攻击提出防御策略。第六章:概述了本论文所做的主要工作,并对今后的工作进行了展望。第二章 Web工作原理与SQL数据库本章从SQL注入攻击与web环境的环境依赖关系,介绍了数据库的基本知识和常见操作SQL数据库的SQL语言,web工作原理,。Web程序的通信方式,为理解SQL注入的生成过程提供一些背景知识。从Web应用层的代码介绍引发SQL注入的因数以及那些开发实践和行为会引发SQL注入。2.1 理解Web应用的工作原理2.1.1 什么是Web应用World Wide Web简称为Web。Web是一个由文档组成的超大规模集合,其中通过链接相互联系。这些文档是由Web服务器提供,可以通过浏览器访问。Web是一组软件和协议的集合。Web应用时一种是用Web浏览器并通过Internet或内部往来访问的程序,Web应用程序通常需要Web浏览器,Web服务器,是基于客户机/服务器的配置而运行的,既B/S结构 。其常见的web应用架如下图2-1所示:图2-1 常见Web应用架构WEB应用程序的三层结构分别为:1表示层(PresentationTier)表示层为用户接口部分,是用户与系统之间交互信息的界面。该层以适当的形式显示中间层送的数据信息,这个功能要通过使用相应的HTML标记来实现。同时,这一层还要负责获得用户录入的数据,完成对录入数据的校验,并将录入数据传送给业务逻辑层。2中间层(MiddleTier)也称业务逻辑层,由WEB服务器和应用程序服务器组成。功能层是应用的主体,也是整个分层模型中最为重要的一层。其主要功能是封装业务逻辑以驱动业务处理服务。这一层为用户界面层提供功能调用,同时它又调用数据访问层所提供的功能来访问数据库。该层接受到用户的请求后,首先需要执行相应的扩展应用程序与数据库进行连接,通过SQL等方式向数据库服务器提出数据处理申请,数据库服务器将数据处理的结果提交给WEB服务器,再由WEB服务器传送回客户端。3数据层(DataTier)数据层是整个分层体系的最底层,它主要用来实现与数据库的交互,即完成查询、插入、删除和修改数据库中数据的功能。数据访问层为业务逻辑层提供服务,根据业务逻辑层的要求从数据库中提取数据或者修改数据库中的数据,把运行结果提交给WEB服务器。如图2-2所示,当用户在客户端点击相应的链接发出页面请求的时候,WEB服务器接到这个请求并按照请求处理逻辑进行处理。如果用户的请求页面存在数据库中,处理逻辑会连接后台数据库,检索用户所需要的原始数据并将其加工成网页的形式,最后由WEB服务器软件将页面返回给用户。图2-2 Web应用三层架构2.1.2 Web系统通信方式大部分的Web应用都是使用HTTP协议,少部分Web应用特别使用HTPS协议。但我们是讨论Web环境下SQL注入攻击,所以只讨论HTTP协议。即超文本协议,HTTP包含两个阶段:请求阶段和响3应阶段。浏览器和Web服务器之间的每一次HTTP通信都包含两个部分:头部和主体。头部包含了与通信的有关消息,主体包含了通信的数据,当然前提是存在这样的数据。这里我们只讨论与Web应用SQL注入攻击常见的HTTP方法:GET、POST。它们各自的特点如下:1. GET请求GET请求是请求服务器的HTTP方法,使用该方法时,信息显示在URL中。通常,Web浏览器创建GET请求,发送给Web服务器,然后再浏览器中呈现结果。GET请求对用户是透明的,但是发送给Web服务器的GET请求格式如下:GET /search.aspx?text=lcd%20monitors&cat=1&num=20 HTTP/1.1Host:User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.19) Gecko/20081216 Ubuntu/8.04 (hardy) Firefox/2.0.0.19Accept: text/xml,application/xml,application/xhtml+xml, text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5Accept-Language: en-gb,en;q=0.5Accept-Encoding: gzip,deflateAccept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7Keep-Alive: 300Proxy-Connection: keep-alive该请求在URL中发送参数,格式如下:?parameter1=value1&patameter2=value2在上述示例中包含三个参数:text、cat和num。远程应用将检索这些参数值,将他们用于实现设计好的目的。对于GET请求来说,只需在浏览器的导航栏中稍加修改即可操纵这些参数。2. POST请求POST请求是一种用于向Web服务器发送信息的HTTP方法。服务器执行的操作取决于目标URL。在浏览器中填写表单并单击Submit按钮时通常使用该方法。下面的例子给出了浏览器发送给远程Web服务器的内容:POST /contact/index.asp HTTP/1.1Host:User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.19) Gecko/20081216 Ubuntu/8.04 (hardy) Firefox/2.0.0.19Accept: text/xml,application/xml,application/xhtml+xml, text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5Accept-Language: en-gb,en;q=0.5Accept-Encoding: gzip,deflateAccept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7Keep-Alive: 300Referer: Content-Type: application/x-www-form-urlencodedContent-Length: 129first=John&last=Doe&email=john&phone=555123456&title=Mr&country=US&comments=I%20would%20like%20to%20request%20information这里发送给Web服务器的值与GET请求的格式相同。不过现在这些值位于请求的底部。2.2 SQL数据库查询语言客户端与WEB服务器之间通过Internet,使用HTTP协议进行请求与应答。在WEB应用程序SQL注入攻击中,被攻击的对象往往是后台数据库,理解SQ数据库对于理解SQL注入攻击与防御使至关重要。SQL是Structured Query Language(结构化查询语言)的缩写。SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言。在使用它时,只需要发出“做什么”的命令,“怎么做”是不用使用者考虑的。SQL功能强大、简单易学、使用方便,已经成为了数据库操作的基础,并且现在几乎所有的数据库均支持SQL。2.2.1 常见SQL查询语言1. 创建数据表:Create table tablename(field type(size) not null ,field type(size) not null primary key(field)Table:新建表的名称,Field:用于指定在新表中创建的新字段的名称,每个表至少有一个字段,Type:用于指定新建字段的数据类型,Size:用于指定文本以及二进制字段的长度,Not null:指定该字段值不能为空,Primary key:设臵主键。2. SQL 数据查询:Select all|distinct exprASc_alias ,exprASc_alias from tableref,tableref where <search_condition>expr:要查询的列名,多个列名之间使用,分隔,Tableref:要查询的表,Search_condition:查询条件,c_alias:字段别名。3. INSERT语句:Insert into tablename (colname,colname) values (expr|NULL,expr|NULL)|Subquery当我们向指定的表中插入输入时只能使用下面两种结构,Values:一次只能向表中插入一条记录,Subquery:可向表中插入多条记录,就是可以欠套语句。4. UPDATA语句:Update tablename set colname=expr|NULL|(subquery)where search_conditionUpdate用来修改表中记录的属性值,支持子查询(subquery)结构。5. DELETE语句:Delete from tablename where search_conditionDelete只删除表中的记录,不删除表的结构。6. Drop table tablename Drop 删除表中的记录,连同表一起删除。2.2.2查询结构中常用知识1. where 子句中使用的逻辑运算符:NOT、AND、OR。2. where 子句中使用的操作符:< <= > >= = <>、Between 在某个取值之间、Like 匹配某个模式、In 包含在某个值的列表中。 Like: % 代表零个或多个任意字符,_ 代表一个任意字符, 指定范围内的任意单个字符, 不在指定范围内的任意单个字符。3. 对查询结果进行排序:Order by、DESC 降序、ASC 升序。4. 对查询结果进行分组:使查询结果按照某一列或多列值进行分组:GROUP BY ALL GROUP_BY_EXPRESSION HAVING:对分组后的结果按条件进行筛选,只能在Group by子句后出现,不能单独使用,只能对分组计算的结果进行筛选,不能使用别名。5. 合并查询UNION:UNION用于合并具有相同字段结构的两个表的内容,主要用在一个结果中集中显示不同表的内容,UNION查询默认不返回重复记录、UNION查询的表的字段必须一样、UNION查询的数据类型必须能兼容、 UNION查询结果只增加了行数而列数不变。2.3本章小结本章节阐述Web系统的工作原理,通信方式,SQL数据库和SQL查询语言基本知识,这些知识是;理解SQL注入攻击的一些基本知识,对于网络系统管理人员,应用开发人员来说理解该知道对于Web应用安全又一个系统、清晰的框架认识。在以后的章节中我们在这知识的基础之上进一步讨论SQL注入的核心技术及防御措施。 第三章 SQL注入攻击测试 SQL注入是从正常的WWW端口访问,而且表面看起来跟一般的Web页面访问没有什么区别 。如果Web开发人员无法确保输入参数等收到的值传递给SQL查询(该查询在数据库服务器上执行)之前已经对其验证,那么通常就会出现SQL注入漏洞。3.1 SQL注入攻击的基本概念SQL注入(SQL Injection)攻击是目前网上最流行最热门的黑客脚本攻击方法之一,那什么是SQL注入式攻击呢?它是指黑客利用一些Web应用程序(论坛,留言本,文章发布系统)中某些疏于防范和用户可以提交或修改数据的页面,精心构造SQL语句,把特殊的SQL指令语句插入到系统实际SQL语句中并执行它,以获取用户密码等敏感信息,以及获取主机控制权限的攻击方法。但这并不局限于MSSQL数据库中,ACCESS、MySQL、ORACLE、SYBASE都可以进行SQL Injection攻击。3.1.1 SQL注入攻击基本特点SQL注入攻击是目前网络攻击的主要手段之一,在一定程度上其安全风险高于缓冲区溢出漏洞,目前防火墙不能对SQL注入漏洞进行有效地防范。防火墙为了使合法用户运行网络应用程序访问服务器端数据,必须允许从Internet到Web服务器的正向连接,因此一旦网络应用程序有注入漏洞,攻击者就可以直接访问数据库进而甚至能够获得数据库所在的服务器的访问权,因此在某些情况下,SQL注入攻击的风险要高于所有其他漏洞。SQL注入攻击具有以下特点:1. 广泛性。SQL注入攻击利用的是SQL语法,因此只要是利用SQL语法的Web应用程序如果未对输入的SQL语句做严格的处理都会存在SQL注入漏洞,目前以Active/Java Server Pages、 Cold Fusion Management、 PHP、Perl等技术与SQL Server、Oracle、DB2、Sybase等数据库相结合的Web应用程序均发现存在SQL注入漏洞。2. 技术难度不高。SQL注入技术公布后,网络上先后出现了多款SQL注入工具,例如教主的HDSI、NBSI、明小子的Domain等,利用这些工具软件可以轻易地对存在SQL注入的网站或者Web应用程序实施攻击,并最终获取其计算器的控制权。3. 危害性大,SQL注入攻击成功后,轻者只是更改网站首页等数据,重者通过网络渗透等攻击技术,可以获取公司或者企业机密数据信息,产生重大经济损失。3.2 SQL注入产生原因随着BS模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据。一般来说,WEB系统的SQL注入攻击产生原因主要是以下几个方面:3.2.1 构造动态字符串 构造动态字符串是一种编程技术,它允许开发人员在运行过程中动态构造SQL语句。开发人员可以使用动态SQL来创建通用、灵活的应用。动态SQL语句是在执行过程中构造的,它根据不同的条件产生不同的SQL语句。当开发人员在运行过程中需要根据不同的查询标准来提取什么字段或根据不同条件来选择不同的查询表,动态构造SQL语句会非常有用,但也容易引发SQL注入漏洞。1. 转义字符处理不当 将单引号()解析成代码与数据间的分界线:假定单引号外面的内容均是需要运行的代码,而单引号引起来的内容均是数据。因此只需要简单地在URL或Web页面(或应用)的字段中输入一个单引号,就能识别出Web站点是否会受到SQL注入攻击。下面是一个非常简单的应用源代码,他将用户输入直接传递给动态创建的SQL语句。/ 构造动态SQL语句$SQL=”select * from table where field=$_GET“input”;/执行SQL语句$result=mysql_query($SQL);/检查从数据库中返回的行数$rowcount=mysql_num_rows($result);$row=1;While ($db_field=mysql_fetch_assco($result) If($row<=$rowcount) Print db_field$row .”<br>”; $row+; 单引号字符作为该程序的输入,则可能出现下列错误中的一种。具体出现何种错误取决于很多环境因素,比如编程语言、使用的数据库以及采用的保护和防御技术。 Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result Resource还有还可能会受到下列错误,这些错误提供了关于如何构造SQL语句的有用信息:You have an error in your SQL syntax: check the manual that corresponds to Your MySQL server version for the right syntax to users near “VALUE” 是因为单引号字符被解析成了字符串分隔符。运行执行的SQL查询在语法上存在错误(它包含多个字符串分隔符),所以数据库抛出异常。SQL数据库将单引号字符看着特殊字符(字符串分隔符)。在SQL注入攻击中,攻击中使用该字符“转义”开发人员的查询以便构造自己的查询并加以执行。单引号字符并不是唯一的转义字符。比如在ORCAL中,空格()、双竖线(|)、逗号(,)、点号(.)、(*/)以及双引号字符(“)均有其特殊含义。类型处理不当在输入参数中,大多数开发者认为只需对输入进行验证,消除单引号字符就足够了。其实,单引号字符号被解析成字符串分隔符并作为代码和数据的分隔线,处理数据时,不需要使用单引号将数据引起来,否则数据会被当作字符串处理。下面是一个非常简单的应用源代码,它将用户输入直接传递给动态创建的SQL语句。/构造动态SQL语句$SQL=”select * from table where filed=”$_GETuserid”;$result=mysql_query($SQL); /more statement / 如果将下列语句作为输入,那么攻击者便会读取/etc/passwd文件中的内容,该文件包含系统用户的属性和用户名,假设调用该函数的用户拥有FILE权限。 1 union all select load_file(/etc/passwd)攻击者的输入直接被解析成了SQL语法,所以攻击中没有必要使用单引号来转义查询。下面的代码更加清晰地说明了构造的SQL语句。Select * from table where userid=1 union all select load_file(/etc/passwd/)2. 查询集处理不当有时候需要使用动态SQL语句对某些SQL语句对复杂的应用进行编码。因为在程序开发阶段可能还不知道要查询的表和字段。比如与大型数据库交互的应用,这些数据库在定期创建的表中存储数据。下面是一个非常简单的应用源代码,他根据用户输入直接传递给动态创建的SQL语句,该示例说明了上述问题。脚本使用应用产生的值作为输入,输入时应该表名加三个列名,之后显示员工信息。该程序允许用户选择他希望返回的数据。/构造动态SQL语句$SQL=”select $_GET“column1”, $_GET“column2”, $_GET“column3“ from $_GET“table”;$result=mysql_query($SQL);$rowcount=mysql_num_rows($result);$row=1;While($db_field=mysql_fetch_assoc($result) If($row<=$rowcount) Print $db_field$row .”<br>”; 如果攻击中操纵HTTP请求并使用users替换表名,使用user、password和supeer_priv字段替换应用产生的列名,那么它便可以显示系统中数据库用户名和口令。下面是他使用应用时构造的URL。3. 错误处理不当错误处理不会为Web站点开来很多安全方面的问题。最常见的问题是将详细的内部错误消息(如数据库转储、错误代码等)显示给用户或攻击者。这些消息会泄露从来都不应该显示的实现上的细节。这些细节会为攻击者提供与网站潜在缺陷相关的重要线索。例如,攻击者可使用详细的数据库错误消息来提取如何修改或构造注入来避开开发人员查询的信息,并得知如何操纵数据库以便取出附加数据的信息或者在某些情况下转储数据库中所有数据的信息。下面是一个简单的使用C#语言编写的ASP.NET应用示例,它使用Microsoft SQL Server数据库服务器作为后台(因为该数据库提供了非常详细的错误消息)。当用户从下拉列表中选择一个用户标识时,脚本会动态产生并执行一条SQL语句:private void SelectedIndexChanged(object sender,System.EventArgs e) String SQL; SQL=”select * from table”; SQL+=”where ID=” +UserList.SelectedItem.Value +”; OleDbConnection con=new OleDbconnection(connectionString); OleDbCommand cmd=new OleDbCommand(SQL,con); OleDbDataReader reader; try Con.Open(); reader=cmd.ExecuteReader(); reader.Read(); lblResults.Text=”<b>”+ reader“LastName”; lblResults.Text

    注意事项

    本文(毕业设计(论文)Web环境下SQL注入攻击与防御研究.doc)为本站会员(laozhun)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开