SQL Injection(SQL注入)介绍及SQL Injection攻击检测工具
2008-09-10 10:04:16 来源:WEB开发网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还是其他什么东西了。
更多精彩
赞助商链接