SQL注入说课材料

上传人:go****e 文档编号:137415927 上传时间:2020-07-08 格式:DOC 页数:24 大小:1.16MB
返回 下载 相关 举报
SQL注入说课材料_第1页
第1页 / 共24页
SQL注入说课材料_第2页
第2页 / 共24页
SQL注入说课材料_第3页
第3页 / 共24页
SQL注入说课材料_第4页
第4页 / 共24页
SQL注入说课材料_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《SQL注入说课材料》由会员分享,可在线阅读,更多相关《SQL注入说课材料(24页珍藏版)》请在金锄头文库上搜索。

1、SQL注入精品文档第1章 本章目标 理解Web应用的工作原理 理解SQL注入 理解SQL注入的产生过程1.1 概述很多人声称自己了解SQL注入,但他们听说或经历的情况都是比较常见的。SQL注入是影响企业运营且最具破坏性的漏洞之一,它会泄露保存在应用程序数据库中的敏感信息,包括用户名、口令、姓名、地址、电话号码以及信用卡明细等易被利用的信息。那么,应该怎样来准确定义SQL注入呢?SQL注入(SQL Injection)是这样一种漏洞:应用程序在向后台数据库传递SQL(Structured Query Language,结构化查询语言)查询时,如果为攻击者提供了影响该查询的能力,则会引发SQL注入

2、。攻击者通过影响传递给数据库的内容来修改SQL自身的语法和功能,并且会影响SQL所支持数据库和操作系统的功能和灵活性。SQL注入不只是一种会影响Web应用的漏洞;对于任何从不可信源获取输入的代码来说,如果使用了该输入来构造动态SQL语句,那么就很可能也会受到攻击(例如,客户端/服务器架构中的“胖客户端”程序)。自SQL数据库开始连接至Web应用起,SQL注入就可能已经存在。Rain Forest Puppy因首次发现它(或至少将其引入了公众的视野)而备受赞誉。1998年圣诞节,Rain Forest Puppy为Phrack( Web Technology Vulnerabilities(NT

3、 Web技术漏洞)”的文章。2000年早期,Rain Forest Puppy还发布了一篇关于SQL注入的报告(“How I hacked PacketStorm”,位于 理解Web应用的工作原理大多数人在日常生活中都会用到Web应用。有时是作为假期生活的一部分,有时是为了访问E-mail、预定假期、从在线商店购买商品或是查看感兴趣的新闻消息等。Web应用的形式有很多种。不管是用何种语言编写的Web应用,有一点是相同的:它们都具有交互性并且多半是数据库驱动的。在互联网中,数据库驱动的Web应用非常普遍。它们通常都包含一个后台数据库和很多Web页面,这些页面中包含了使用某种编程语言编写的服务器端

4、脚本,而这些脚本则能够根据Web页面与用户的交互从数据库中提取特定的信息。电子商务是数据库驱动的Web应用的最常见形式之一。电子商务应用的很多信息,如产品信息、库存水平、价格、邮资、包装成本等均保存在数据库中。如果读者曾经从电子零售商那里在线购买过商品和产品,那么应该不会对这种类型的应用感到陌生。数据库驱动的Web应用通常包含三层:表示层(Web浏览器或呈现引擎)、逻辑层(如C#、ASP、.NET、PHP、JSP等编程语言)和存储层(如Microsoft SQL Server、MySQL、Oracle等数据库)。Web浏览器(表示层,如Internet Explorer、Safari、Fire

5、fox等)向中间层(逻辑层)发送请求,中间层通过查询、更新数据库(存储层)来响应该请求。下面看一个在线零售商店的例子。该在线商店提供了一个搜索表单,顾客可以按特定的兴趣对商品进行过滤、分类。另外,它还提供了对所显示商品作进一步筛选的选项,以满足顾客在经济上的预算需求。可以使用下列URL查看商店中所有价格低于$100的商品: http:/ connect to the database$conn = mysql_connect(localhost,username,password);/ dynamically build the sql statement with the input $qu

6、ery = SELECT * FROM Products WHERE Price $_GETval . ORDER BY ProductDescription;/ execute the query against the database$result = mysql_query($query);/ iterate through the record setwhile($row = mysql_fetch_array($result, MYSQL_ASSOC) / display the results to the browser echo Description : $rowProdu

7、ctDescription . Product ID : $rowProductID . Price : $sowPrice ;接下来的代码示例更清晰地说明了PHP脚本构造并执行的SQL语句。该语句返回数据库中所有价格低于$100的商品,之后在Web浏览器上显示并呈现这些商品以方便顾客在预算范围内继续购物。SELECT *FROM ProductsWHERE Price 100.00ORDER BY ProductDescription;一般来说,所有可交互的数据库驱动的Web应用均以相同的(至少是类似的)方式运行。1.2.1 一种简单的应用架构前面讲过,数据库驱动的Web应用通常包含三层:表

8、示层、逻辑层和存储层。为更好地帮助读者理解Web应用技术是如何进行交互的,从而为用户带来功能丰富的Web体验,我们借助图1-1来说明前面描述的那个简单的三层架构示例。表示层是应用的最高层,它显示与商品浏览、购买、购物车内容等服务相关的信息,并通过将结果输出到浏览器/客户端层和网络上的所有其他层来与应用架构的其他层进行通信。逻辑层是从表示层剥离出来的,作为单独的一层,它通过执行细节处理来控制应用的功能。数据层包括数据库服务器,用于对信息进行存储和检索。数据层保证数据独立于应用服务器或业务逻辑。将数据作为单独的一层还可以提高程序的可扩展性和性能。在图1-1中,Web浏览器(表示层)向中间层(逻辑层

9、)发送请求,中间层通过查询、更新数据库(存储层)响应该请求。三层架构中一条最基本的规则是:表示层不应直接与数据层通信。在三层架构中,所有通信都必须经过中间件层。从概念上看,三层架构是一种线性关系。图1-1 简单的三层架构在图1-1中,用户激活Web浏览器并连接到http:/。位于逻辑层的Web服务器从文件系统中加载脚本并将其传递给脚本引擎,脚本引擎负责解析并执行脚本。脚本使用数据库连接器打开存储层连接并对数据库执行SQL语句。数据库将数据返回给数据库连接器,后者将其传递给逻辑层的脚本引擎。逻辑层在将Web页面以HTML格式返回给表示层的用户的Web浏览器之前,先执行相关的应用或业务逻辑规则。用

10、户的Web浏览器呈现HTML并借助代码的图形化表示展现给用户。所有操作都将在数秒内完成,并且对用户是透明的。1.2.2 一种较复杂的架构三层解决方案不具有扩展性,所以最近几年研究人员不断地对三层架构进行改进,并在可扩展性和可维护性基础之上创建了一种新概念:n层应用开发范式。其中包括一种四层解决方案,该方案在Web服务器和数据库之间使用了一层中间件(通常称为应用服务器)。n层架构中的应用服务器负责将API(应用编程接口)提供给业务逻辑和业务流程以供程序使用。可以根据需要引入其他的Web服务器。此外,应用服务器可以与多个数据源通信,包括数据库、大型机以及其他旧式系统。图1-2描绘了一种简单的四层架

11、构。在图1-2中,Web浏览器(表示层)向中间层(逻辑层)发送请求,后者依次调用由位于应用层的应用服务器所提供的API,应用层通过查询、更新数据库(存储层)来响应该请求。在图1-2中,用户激活Web浏览器并连接到http:/。位于逻辑层的Web服务器从文件系统中加载脚本并将其传递给脚本引擎,脚本引擎负责解析并执行脚本。脚本调用由位于应用层的应用服务器所提供的API。应用服务器使用数据库连接器打开存储层连接并对数据库执行SQL语句。数据库将数据返回给数据库连接器,应用服务器在将数据返回给Web服务器之前先执行相关的应用或业务逻辑规则。Web服务器在将数据以HTML格式返回给表示层的用户的Web浏

12、览器之前先执行最后的有关逻辑。用户的Web浏览器呈现HTML并借助代码的图形化表示展现给用户。所有操作都将在数秒内完成,并且对用户是透明的。图1-2 四层架构层式架构的基本思想是将应用分解成多个逻辑块(或层),其中每一层都分配有通用或特定的角色。各个层部署在不同的机器上,或者虽然位于同一台机器上,但实际上或概念上是彼此分离的。使用的层越多,每一层的角色就越具体。将应用的职责分成多个层能使应用更易于扩展,可以更好地为开发人员分配开发任务,提高应用的可读性和组件的可复用性。该方法还可以通过消除单点失败来提高应用的健壮性。例如,决定更换数据库提供商时,只需修改应用层的相关部分即可,表示层和逻辑层可保

13、持不变。在互联网上,三层架构和四层架构是最常见的部署架构。正如前面所介绍的,n层架构非常灵活,在概念上它支持多层之间的逻辑分离,并且支持以多种方式进行部署。1.3 理解SQL注入Web应用越来越成熟,技术也越来越复杂。它们涵盖了从动态Internet和内部网入口(如电子商务网站和合作企业外部网)到以HTTP方式传递数据的企业应用(如文档管理系统和ERP应用)。这些系统的有效性及其存储、处理数据的敏感性对于主要业务而言都极其关键(而不仅仅是在线电子商务商店)。Web应用及其支持的基础结构和环境使用了多种技术,这些技术可能包含很多在他人代码基础上修改得到的代码。正是这种功能丰富的特性以及便于通过I

14、nternet或内部网对信息进行比较、处理、散播的能力,使它们成为流行的攻击目标。此外,随着网络安全技术的不断成熟,通过基于网络的漏洞来攻破信息系统的机会正不断减少,黑客开始将重心转向尝试危害应用上。SQL注入是一种将SQL代码插入或添加到应用(用户)的输入参数中的攻击,之后再将这些参数传递给后台的SQL服务器加以解析并执行。凡是构造SQL语句的步骤均存在被潜在攻击的风险,因为SQL的多样性和构造时使用的方法均提供了丰富的编码手段。SQL注入的主要方式是直接将代码插入到参数中,这些参数会被置入SQL命令中加以执行。不太直接的攻击方式是将恶意代码插入到字符串中,之后再将这些字符串保存到数据库的数据表中或将其当作元数据。当将存储的字符串置入动态SQL命令中时,恶意代码就将被执行。如果Web应用未对动态构造

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 幼儿/小学教育 > 其它小学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号