SQL 注入式攻击的本质

EJ6T0S

EJ6T0S

2016-02-19 10:27

图老师小编精心整理的SQL 注入式攻击的本质希望大家喜欢,觉得好的亲们记得收藏起来哦!您的支持就是小编更新的动力~
有文章还说注入式攻击还会有“第三波”攻击潮,到时候会更加难以察觉,连微软的大佬都跑出来澄清说与微软的技术与编码无关,微软为此还专门推出了三个检测软件,那么这个SQL注入式攻击的漏洞究竟是怎么造成的呢?

正如微软的大佬所说的,是由于网站程序的开发人员编码不当造成的,不光是ASP、ASP.NET,也包括JSP、PHP等技术,受影响的也不仅仅是Access和SQL Server数据库,也包括Oracle和MySql等其他关系数据库,和人家微软没什么关系。事实上不光是基于B/S架构的系统或网站存在这样的问题,基于C/S架构的系统也存在这样的问题,只不过由于C/S架构的特点决定了不可能像B/S系统这样影响这么广泛。那么为什么说这个问题是开发人员编码不当造成的呢,下面我们就来具体分析。

首先让我们来看一下以下这四条SQL查询语句
语句1:select * from news where newstype=1
语句2:select * from news where newstype=1;drop table news
语句3:select * from news where newstype='社会新闻'
语句4:select * from news where newstype='社会新闻';drop table news--'
大家都知道语句1的作用是查询news表中newstype字段值等于1的所有记录,其中newstype字段的类型是一种数值型,比如Int、SmaillInt、TinyInt、Float等等;语句2实际上是两条语句,第一条的作用和语句1的作用相同,第二条的作用是删除数据库中的news表。语句3和语句4的功能和语句1、语句2的基本相同,所不同的是语句3、4里的newstype字段是字符型的,比如:char、varchar、nvarchar、text等等

不管是在ASP还是ASP.NET还是JSP或PHP,一般我们都会采用“select * from news where newstype=”+v_newstype的方法来构造语句1,或者“select * from news where newstype='”+v_newstype+"'"来构造语句3,其中v_newstype是一个变量,如果v_newstype的值等于1,构造出来的就是语句1了,如果v_newstype的值等于"社会新闻",构造出来的就是语句3了,但是很不幸的是如果我们忽略了对v_newstype的检查,通过这个方法构造出来的也可能是语句2或者语句4,比如v_newstype的值为“1;drop table news”或“社会新闻';drop table news--”,如果我们的疏忽让别人给利用了,就会给我们造成巨大的损失,SQL注入式攻击正是利用了我们的这个疏忽,所以说SQL注入式攻击的根源来自开发人员的编码不当和你所使用的平台、开发工具以及系统架构等等都没有任何直接的关系。

既然SQL注入式攻击是由于编码人员编码不当造成的,那究竟怎么样的编码才是恰当的编码才不会受到SQL注入攻击呢,下一篇我们将继续介绍。
展开更多 50%)
分享

猜你喜欢

SQL 注入式攻击的本质

编程语言 网络编程
SQL 注入式攻击的本质

防范SQL注入式攻击

SQLServer
防范SQL注入式攻击

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

防范sql注入式攻击js版本

Web开发
防范sql注入式攻击js版本

SQL注入攻击通杀

SQLServer
SQL注入攻击通杀

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

Dreamweaver中sql注入式攻击的防范

Web开发
Dreamweaver中sql注入式攻击的防范

ASP防SQL注入攻击程序

ASP
ASP防SQL注入攻击程序

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

翻译整理的jQuery使用查询手册

翻译整理的jQuery使用查询手册

使用TextRange获取输入框中光标的位置的代码

使用TextRange获取输入框中光标的位置的代码
下拉加载更多内容 ↓