SQL 注入式攻击的本质

2016-02-19 10:27 42 1 收藏

图老师小编精心整理的SQL 注入式攻击的本质希望大家喜欢,觉得好的亲们记得收藏起来哦!您的支持就是小编更新的动力~

【 tulaoshi.com - 编程语言 】

有文章还说注入式攻击还会有“第三波”攻击潮,到时候会更加难以察觉,连微软的大佬都跑出来澄清说与微软的技术与编码无关,微软为此还专门推出了三个检测软件,那么这个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注入攻击呢,下一篇我们将继续介绍。

来源:http://www.tulaoshi.com/n/20160219/1594674.html

延伸阅读
标签: ASP
  '========================== '过滤提交表单中的SQL '========================== function ForSqlForm()  dim fqys,errc,i,items  dim nothis(18)  nothis(0)="net user"  nothis(1)="xp_cmdshell"  nothis(2)="/add"  nothis(3)="exec%20master.dbo.xp_cmdshell"  nothis(4)="net local...
标签: Web开发
现在基于web的攻击一般都是注入。导致注入的原因一般为对变量的过滤不完全,从而可以使入侵者非法执行程序或查询修改任意数据。随着注入攻击的愈演愈烈,一些专门的过滤代码应运而生。但一些过滤代码的不完善很可能导致新的攻击。下面就以目前应用最广泛的过滤代码--SQL通用防注入程序为下列说明漏洞的成因、利用方法及防范措施。 SQL...
标签: PHP
if(!get_magic_quotes_gpc()){callUserFunc( ___FCKpd___0 GET,'addslashes');callUserFunc( ___FCKpd___0 POST,'addslashes'); }就可以了,字段值加 ' 就可以了,如查询文章"SELECT * FROM table WHERE id='$id'"
标签: SQLServer
近段时间由于修改一个ASP程序(有SQL注入漏洞),在网上找了很多相关的一些防范办法,都不近人意,所以我将现在网上的一些方法综合改良了一下,写出这个ASP函数,供大家参考。 Function SafeRequest(ParaName) Dim ParaValue ParaValue=Request(ParaName) if IsNumeric(ParaValue) = True then SafeRequest=ParaValue exit Function elseIf...
标签: ASP
  学asp也有一段时间了,这几天一直在写自己的程序,也遇到了好多问题,我就不得不得考虑到一些现在的漏洞,比如,‘ 或 and 1=1等等的一些漏洞!别的先不管,今天我就来说说如何堵这个漏洞! 记得看了一篇文章(不记得什么时候看的了),他用到了instr这个函数,具体的应该是这样的。 If instr(Request("id")," ")0 or instr(...

经验教程

481

收藏

94
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部