WEB开发网
开发学院数据库MSSQL Server SQL Injection(SQL注入)介绍及SQL Injection攻击... 阅读

SQL Injection(SQL注入)介绍及SQL Injection攻击检测工具

 2008-09-10 10:04:16 来源:WEB开发网   
核心提示:1.关于SQL Injection迄今为止,我基本没有看到谁写出一篇很完整的文章,SQL Injection(SQL注入)介绍及SQL Injection攻击检测工具,或者说很成熟的解决方案(能做到 的人肯定很多,问题是没有流传开来,设有这样的sql语句:update tableName set columnName1

1.关于SQL Injection

迄今为止,我基本没有看到谁写出一篇很完整的文章,或者说很成熟的解决方案(能做到 的人肯定很多,问题是没有流传开来,很遗憾) 我简单的说几点,希望启发大家思考,起到抛砖引玉的作用

一、SQL Injection的原理

SQL Injection的实现方法和破坏作用有很多,但万变不离其宗,其原理可以概括为一句话 :SQL Injection就是向服务器端提交事先准备好的数据,拼凑出攻击者想要的SQL语句,以改变数据库操作执行计划。

我想,这么说也许不算精炼,但意思应该很明确了,这句话主要包含这么三层意思:

1.攻击者通过何种途径注入?

存在SQL Injection漏洞的地方都是应用程序需要根据客户端环境构造SQL语句的地方。由此可以推论,只要存在"客户端数据替换预定义变量"的地方,就有可能被注入。

客户端提交数据可以有很多种方式:GET,POST,Client-Agent,Cookie,Server Enviroment...

2.攻击者为什么可以将它想要的语句"注入"?

因为服务器端应用程序采用拼凑(请特别留意这个词)SQL语句的方式,这使得攻击者有机会在提交的数据中包含SQL关键字或者运算符,来构造他们想要的语句。

3.SQL Injection最终结果是什么?

改变数据库操作执行计划。

这个结果不一定是恶意的,只要你的SQL语句没有按照你预期的计划(plan)执行,那么就 可以视为被注入了,不管提交数据的人是不是恶意的。

设有这样的sql语句:

update tableName set columnName1 = " $Client_Submit_Data " where PK_ID = 1234

$Client_Submit_Data是一个变量,它代表客户端提交的数据,这里我就不管环境是ASP还 是PHP还是其他什么东西了。

1 2 3 4 5  下一页

Tags:SQL Injection SQL

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接