SQL注入学习笔记
前言
看的书是:SQL注入攻击与防御(第二版)
第1章 什么是SQL注入
1.1 概述
SQL注入是影响企业运营且最具破坏性的漏洞之一,它会泄露保存在应用程序数据库中的敏感信息,包括用户名、口令、姓名、地址、电话号码以及信用卡明细等易被利用的信息
应用程序在向后台数据库传递SQL查询时,如果为攻击者提供了影响该查询的能力,就会引发SQL注入
典型的SQL注入更多的是针对服务器端的数据库,然而根据目前HTML5的规范,攻击者可以采用完全相同的方法,执行JavaScript或其他代码访问客户端数据库以窃取数据
1.2 理解Web应用的工作原理
不管是用何种语言编写的Web应用,有一点是相同的:它们都具有交互性并且多半是数据库驱动的。
数据库驱动的Web应用通常包含三层:表示层(Web浏览器或呈现引擎)、逻辑层(如C#、ASP、.NET、PHP、JSP等编程语言)和储存层(如Microsoft SQL Server、MySQL、Oracle)
1.2.1 一种简单的应用架构
表示层是应用的最高层,它显示与商品浏览,购买,购物车等服务的相关信息,并通过将结果输入到浏览器/客户端层和网络上的所有其他层来与应用架构的其他层进行通信。逻辑层是从表示层剥离出来的,作为单独的一层,它通过执行细节处理来控制应用的功能。数据层包括数据库服务器,用于对信息进行储存和检索。数据层保证数据独立于应用服务器或业务逻辑逻辑。将数据作为单独的一层还可以提高数据的可扩展性和性能。
一个简单的三层架构示例:
Web浏览器(表示层)向中间层(逻辑层)发送请求,中间层通过查询、更新数据库(储存层)响应该请求。
在三层架构中,所有的通信都必须经过中间层。从概念上看,三层架构是一种线性关系。

1.2.2 一种较复杂的架构
三层解决方案不具有扩展性,在对其进行改进,并在可扩展性和可维护性的基础上创建了一种新概念:n层应用程序开发范式
一个四层架构示例:
该结构在Web服务器和数据库之间使用了一层中间件(通常称为应用服务器)。n层架构中的应用服务器负责将API(应用编程接口)提供给业务逻辑和业务流程以供程序使用。可以根据需要引入其他Web服务器。此外,应用服务器可以与多个数据源通信,包括数据库、大型机以及其他旧式系统
Web浏览器(表示层)向中间层(逻辑层)发送请求,后者依次调用位于应用层的应用服务器提供的API,应用层通过查询、更新数据库(储存层)来响应该请求

分层架构的基本思想是将应用分解成多个逻辑块(或层),其中每一层都分配有通用或特定的角色。各个层可以部署在不同的机器上,也可以部署于同一台机器上,但实际在概念上是彼此分离的。使用的层越多,每一层的角色就越具体。将应用的指责分成多个层能适应用更易于扩展,可以更好的为开发人员分配开发任务,提高应用的可读性和组件的可复用性,该方法还可以通过消除单点失败来提高应用的健壮性。例如,决定更换数据库提供商时,只需修改应用层的相关部分即可,表示层和逻辑层可以保持不变。在互联网上,3层架构和4层架构是最常见的部署架构。
1.3 理解SQL注入
SQL注入的主要方式是直接将代码插入参数中,这些参数会被置入SQL命令中加以执行。间接的攻击方式是将恶意代码插入字符串中,之后再将这些字符串保存到数据库的数据表中或将其当作元数据。当将储存的字符串置入动态SQL命令中时,恶意代码就将被执行。

浙公网安备 33010602011771号