地址
Sql注入简介
Sql 注入攻击是通过将恶意的 Sql 查询或添加语句插入到应用的输入参数中,再在后台 Sql 服务器上解析执行进行的攻击,它目前黑客对数据库进行攻击的最常用手段之一。
Web 程序三层架构
三层架构(3-tier architecture) 通常意义上就是将整个业务应用划分为:
界面层(User Interface layer)
业务逻辑层(Business Logic Layer)
数据访问层(Data access layer)
由数据库驱动的 Web 应用程序依从三层架构的思想也分为了三层:
- 表示层
- 业务逻辑层(又称领域层)
- 数据访问层(又称存储层)
在上图中,用户访问实验楼主页进行了如下过程:
- 在 Web 浏览器中输入
www.shiyanlou.com
连接到实验楼服务器。 - 业务逻辑层的 Web 服务器从本地存储中加载
index.php
脚本并解析。 - 脚本连接位于数据访问层的
DBMS
(数据库管理系统),并执行Sql
语句。 - 数据访问层的数据库管理系统返回
Sql
语句执行结果给 Web 服务器。 - 业务逻辑层的 Web 服务器将 Web 页面封装成 HTML 格式发送给表示层的 Web 浏览器。
- 表示层的 Web 浏览器解析 HTML 文件,将内容展示给用户。
Sql 注入漏洞详解
Sql 注入产生原因及威胁
- 网站内部直接发送的Sql请求一般不会有危险,但实际情况是很多时候需要结合用户的输入数据动态构造 Sql 语句,
- 如果用户输入的数据被构造成恶意 Sql 代码,Web 应用又未对动态构造的 Sql 语句使用的参数进行审查,则会带来意想不到的危险。
Sql 注入带来的威胁主要有如下几点
- 猜解后台数据库,这是利用最多的方式,盗取网站的敏感信息。
- 绕过认证,列如绕过验证登录网站后台。
- 注入可以借助数据库的存储过程进行提权等操作