更没想到
![](/icons/61915de.gif)
是这么老掉牙
![](/icons/61915de.gif)
东西居然还能跑出来搅风搅雨
![](/icons/61915dou.gif)
而且造成了如此大
![](/icons/61915de.gif)
破坏
![](/icons/61915dou.gif)
有文章还说注入式攻击还会有“第 3波”攻击潮
![](/icons/61915dou.gif)
到时候会更加难以察觉
![](/icons/61915dou.gif)
连微软
![](/icons/61915de.gif)
大佬都跑出来澄清说和微软
![](/icons/61915de.gif)
技术和编码无关
![](/icons/61915dou.gif)
微软为此还专门推出了 3个检测软件Software
![](/icons/61915dou.gif)
那么这个SQL注入式攻击
![](/icons/61915de.gif)
漏洞究竟是如何造成
![](/icons/61915de.gif)
呢?
正如微软
![](/icons/61915de.gif)
大佬所说
![](/icons/61915de.gif)
![](/icons/61915dou.gif)
是由于网站WebSite
![](/icons/61915chengxu.gif)
![](/icons/61915de.gif)
开发人员编码不当造成
![](/icons/61915de.gif)
![](/icons/61915dou.gif)
不光是ASP、ASP.NET
![](/icons/61915dou.gif)
也包括JSP、PHP等技术
![](/icons/61915dou.gif)
受影响
![](/icons/61915de.gif)
也不仅仅是Access和SQL Server数据库
![](/icons/61915dou.gif)
也包括Oracle和MySql等其他关系数据库
![](/icons/61915dou.gif)
和人家微软没什么关系
![](/icons/61915dou2.gif)
事实上不光是基于B/S架构
![](/icons/61915de.gif)
系统或网站WebSite存在这样
![](/icons/61915de.gif)
问题
![](/icons/61915dou.gif)
基于C/S架构
![](/icons/61915de.gif)
系统也存在这样
![](/icons/61915de.gif)
问题
![](/icons/61915dou.gif)
只不过由于C/S架构
![](/icons/61915de.gif)
特点决定了不可能像B/S系统这样影响这么广泛
![](/icons/61915dou2.gif)
那么为什么说这个问题是开发人员编码不当造成
![](/icons/61915de.gif)
呢
![](/icons/61915dou.gif)
下面我们就来具体分析
首先让我们来看
![](/icons/61915yi.gif)
下以下这两条SQL查询语句
语句1:select * from
![](/icons/61915new.gif)
s where
![](/icons/61915new.gif)
stype=1
语句2:select * from
![](/icons/61915new.gif)
s where
![](/icons/61915new.gif)
stype=1;drop table
![](/icons/61915new.gif)
s
语句3:select * from
![](/icons/61915new.gif)
s where
![](/icons/61915new.gif)
stype='社会新闻'
语句4:select * from
![](/icons/61915new.gif)
s where
![](/icons/61915new.gif)
stype='社会新闻';drop table
![](/icons/61915new.gif)
s--'
大家都知道语句1
![](/icons/61915de.gif)
作用是查询
![](/icons/61915new.gif)
s表中
![](/icons/61915new.gif)
stype字段值等于1
![](/icons/61915de.gif)
所有记录
![](/icons/61915dou.gif)
其中
![](/icons/61915new.gif)
stype字段
![](/icons/61915de.gif)
类型是
![](/icons/61915yi.gif)
种数值型
![](/icons/61915dou.gif)
比如Int、SmaillInt、TinyInt、Float等等;语句2实际上是两条语句
![](/icons/61915dou.gif)
第
![](/icons/61915yi.gif)
条
![](/icons/61915de.gif)
作用和语句1
![](/icons/61915de.gif)
作用相同
![](/icons/61915dou.gif)
第 2条
![](/icons/61915de.gif)
作用是删除数据库中
![](/icons/61915de.gif)
![](/icons/61915new.gif)
s表
![](/icons/61915dou2.gif)
语句3和语句4
![](/icons/61915de.gif)
功能和语句1、语句2
![](/icons/61915de.gif)
基本相同
![](/icons/61915dou.gif)
所区别
![](/icons/61915de.gif)
是语句3、4里
![](/icons/61915de.gif)
![](/icons/61915new.gif)
stype字段是
![](/icons/61915zifu.gif)
型
![](/icons/61915de.gif)
![](/icons/61915dou.gif)
比如:char、varchar、nvarchar、text等等
不管是在ASP还是ASP.NET还是JSP或PHP
![](/icons/61915dou.gif)
![](/icons/61915yi.gif)
般我们都会采用“select * from
![](/icons/61915new.gif)
s where
![](/icons/61915new.gif)
stype=”+v_
![](/icons/61915new.gif)
stype
![](/icons/61915de.gif)
思路方法来构造语句1
![](/icons/61915dou.gif)
或者“select * from
![](/icons/61915new.gif)
s where
![](/icons/61915new.gif)
stype='”+v_
![](/icons/61915new.gif)
stype+"'"来构造语句3
![](/icons/61915dou.gif)
其中v_
![](/icons/61915new.gif)
stype是
![](/icons/61915yi.gif)
个变量
![](/icons/61915dou.gif)
如果v_
![](/icons/61915new.gif)
stype
![](/icons/61915de.gif)
值等于1
![](/icons/61915dou.gif)
构造出来
![](/icons/61915de.gif)
就是语句1了
![](/icons/61915dou.gif)
如果v_
![](/icons/61915new.gif)
stype
![](/icons/61915de.gif)
值等于"社会新闻"
![](/icons/61915dou.gif)
构造出来
![](/icons/61915de.gif)
就是语句3了
![](/icons/61915dou.gif)
但是很不幸
![](/icons/61915de.gif)
是如果我们忽略了对v_
![](/icons/61915new.gif)
stype
![](/icons/61915de.gif)
检查
![](/icons/61915dou.gif)
通过这个思路方法构造出来
![](/icons/61915de.gif)
也可能是语句2或者语句4
![](/icons/61915dou.gif)
比如v_
![](/icons/61915new.gif)
stype
![](/icons/61915de.gif)
值为“1;drop table
![](/icons/61915new.gif)
s”或“社会新闻';drop table
![](/icons/61915new.gif)
s--”
![](/icons/61915dou.gif)
如果我们
![](/icons/61915de.gif)
疏忽让别人给利用了
![](/icons/61915dou.gif)
就会给我们造成巨大
![](/icons/61915de.gif)
损失
![](/icons/61915dou.gif)
SQL注入式攻击正是利用了我们
![](/icons/61915de.gif)
这个疏忽
![](/icons/61915dou.gif)
所以说SQL注入式攻击
![](/icons/61915de.gif)
根源来自开发人员
![](/icons/61915de.gif)
编码不当和你所使用
![](/icons/61915de.gif)
平台、开发工具以及系统架构等等都没有任何直接
![](/icons/61915de.gif)
关系
既然SQL注入式攻击是由于编码人员编码不当造成
![](/icons/61915de.gif)
![](/icons/61915dou.gif)
那究竟如何样
![](/icons/61915de.gif)
编码才是恰当
![](/icons/61915de.gif)
编码才不会受到SQL注入攻击呢
![](/icons/61915dou.gif)
下
![](/icons/61915yi.gif)
篇我们将继续介绍