SQL 注入式攻击的本质


SQL 注入式攻击,又是注入式攻击,没想到 2008 年这个老掉牙的东西又出来搅风搅雨,更没想到的是这么老掉牙的东西居然还能跑出来搅风搅雨,而且造成了如此大的破坏,有文章还说注入式攻击还会有 第三波 攻击潮,到时候会更加难以察觉,连微软的大佬都跑出来澄清说与微软的技术与编码无关,微软为此还专门推出了三个检测软件,那么这个 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 n ews 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 ,比如< /SPAN>v_newstype 的值为“ 1;drop table news ”或“社会新闻';drop table news--”,如果我们的疏忽让别人给利用了,就会给我们造成巨大的损失, SQL 注入式攻击正是利用了我们的这个疏忽,所以说 SQL 注入式攻击的根源来自开发人员的编码不当和你所使用的平台、开发工具以及系统架构等等都没有任何直接的关系。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值