SQL 注入式攻擊的本質(zhì)
更新時(shí)間:2008年12月25日 12:34:29 作者:
SQL 注入式攻擊,又是注入式攻擊,沒(méi)想到2008年這個(gè)老掉牙的東西又出來(lái)攪風(fēng)攪雨,更沒(méi)想到的是這么老掉牙的東西居然還能跑出來(lái)攪風(fēng)攪雨,而且造成了如此大的破壞
有文章還說(shuō)注入式攻擊還會(huì)有“第三波”攻擊潮,到時(shí)候會(huì)更加難以察覺(jué),連微軟的大佬都跑出來(lái)澄清說(shuō)與微軟的技術(shù)與編碼無(wú)關(guān),微軟為此還專(zhuān)門(mén)推出了三個(gè)檢測(cè)軟件,那么這個(gè)SQL注入式攻擊的漏洞究竟是怎么造成的呢?
正如微軟的大佬所說(shuō)的,是由于網(wǎng)站程序的開(kāi)發(fā)人員編碼不當(dāng)造成的,不光是ASP、ASP.NET,也包括JSP、PHP等技術(shù),受影響的也不僅僅是Access和SQL Server數(shù)據(jù)庫(kù),也包括Oracle和MySql等其他關(guān)系數(shù)據(jù)庫(kù),和人家微軟沒(méi)什么關(guān)系。事實(shí)上不光是基于B/S架構(gòu)的系統(tǒng)或網(wǎng)站存在這樣的問(wèn)題,基于C/S架構(gòu)的系統(tǒng)也存在這樣的問(wèn)題,只不過(guò)由于C/S架構(gòu)的特點(diǎn)決定了不可能像B/S系統(tǒng)這樣影響這么廣泛。那么為什么說(shuō)這個(gè)問(wèn)題是開(kāi)發(fā)人員編碼不當(dāng)造成的呢,下面我們就來(lái)具體分析。
首先讓我們來(lái)看一下以下這四條SQL查詢語(yǔ)句
語(yǔ)句1:select * from news where newstype=1
語(yǔ)句2:select * from news where newstype=1;drop table news
語(yǔ)句3:select * from news where newstype='社會(huì)新聞'
語(yǔ)句4:select * from news where newstype='社會(huì)新聞';drop table news--'
大家都知道語(yǔ)句1的作用是查詢news表中newstype字段值等于1的所有記錄,其中newstype字段的類(lèi)型是一種數(shù)值型,比如Int、SmaillInt、TinyInt、Float等等;語(yǔ)句2實(shí)際上是兩條語(yǔ)句,第一條的作用和語(yǔ)句1的作用相同,第二條的作用是刪除數(shù)據(jù)庫(kù)中的news表。語(yǔ)句3和語(yǔ)句4的功能和語(yǔ)句1、語(yǔ)句2的基本相同,所不同的是語(yǔ)句3、4里的newstype字段是字符型的,比如:char、varchar、nvarchar、text等等
不管是在ASP還是ASP.NET還是JSP或PHP,一般我們都會(huì)采用“select * from news where newstype=”+v_newstype的方法來(lái)構(gòu)造語(yǔ)句1,或者“select * from news where newstype='”+v_newstype+"'"來(lái)構(gòu)造語(yǔ)句3,其中v_newstype是一個(gè)變量,如果v_newstype的值等于1,構(gòu)造出來(lái)的就是語(yǔ)句1了,如果v_newstype的值等于"社會(huì)新聞",構(gòu)造出來(lái)的就是語(yǔ)句3了,但是很不幸的是如果我們忽略了對(duì)v_newstype的檢查,通過(guò)這個(gè)方法構(gòu)造出來(lái)的也可能是語(yǔ)句2或者語(yǔ)句4,比如v_newstype的值為“1;drop table news”或“社會(huì)新聞';drop table news--”,如果我們的疏忽讓別人給利用了,就會(huì)給我們?cè)斐删薮蟮膿p失,SQL注入式攻擊正是利用了我們的這個(gè)疏忽,所以說(shuō)SQL注入式攻擊的根源來(lái)自開(kāi)發(fā)人員的編碼不當(dāng)和你所使用的平臺(tái)、開(kāi)發(fā)工具以及系統(tǒng)架構(gòu)等等都沒(méi)有任何直接的關(guān)系。
既然SQL注入式攻擊是由于編碼人員編碼不當(dāng)造成的,那究竟怎么樣的編碼才是恰當(dāng)?shù)木幋a才不會(huì)受到SQL注入攻擊呢,下一篇我們將繼續(xù)介紹。
正如微軟的大佬所說(shuō)的,是由于網(wǎng)站程序的開(kāi)發(fā)人員編碼不當(dāng)造成的,不光是ASP、ASP.NET,也包括JSP、PHP等技術(shù),受影響的也不僅僅是Access和SQL Server數(shù)據(jù)庫(kù),也包括Oracle和MySql等其他關(guān)系數(shù)據(jù)庫(kù),和人家微軟沒(méi)什么關(guān)系。事實(shí)上不光是基于B/S架構(gòu)的系統(tǒng)或網(wǎng)站存在這樣的問(wèn)題,基于C/S架構(gòu)的系統(tǒng)也存在這樣的問(wèn)題,只不過(guò)由于C/S架構(gòu)的特點(diǎn)決定了不可能像B/S系統(tǒng)這樣影響這么廣泛。那么為什么說(shuō)這個(gè)問(wèn)題是開(kāi)發(fā)人員編碼不當(dāng)造成的呢,下面我們就來(lái)具體分析。
首先讓我們來(lái)看一下以下這四條SQL查詢語(yǔ)句
語(yǔ)句1:select * from news where newstype=1
語(yǔ)句2:select * from news where newstype=1;drop table news
語(yǔ)句3:select * from news where newstype='社會(huì)新聞'
語(yǔ)句4:select * from news where newstype='社會(huì)新聞';drop table news--'
大家都知道語(yǔ)句1的作用是查詢news表中newstype字段值等于1的所有記錄,其中newstype字段的類(lèi)型是一種數(shù)值型,比如Int、SmaillInt、TinyInt、Float等等;語(yǔ)句2實(shí)際上是兩條語(yǔ)句,第一條的作用和語(yǔ)句1的作用相同,第二條的作用是刪除數(shù)據(jù)庫(kù)中的news表。語(yǔ)句3和語(yǔ)句4的功能和語(yǔ)句1、語(yǔ)句2的基本相同,所不同的是語(yǔ)句3、4里的newstype字段是字符型的,比如:char、varchar、nvarchar、text等等
不管是在ASP還是ASP.NET還是JSP或PHP,一般我們都會(huì)采用“select * from news where newstype=”+v_newstype的方法來(lái)構(gòu)造語(yǔ)句1,或者“select * from news where newstype='”+v_newstype+"'"來(lái)構(gòu)造語(yǔ)句3,其中v_newstype是一個(gè)變量,如果v_newstype的值等于1,構(gòu)造出來(lái)的就是語(yǔ)句1了,如果v_newstype的值等于"社會(huì)新聞",構(gòu)造出來(lái)的就是語(yǔ)句3了,但是很不幸的是如果我們忽略了對(duì)v_newstype的檢查,通過(guò)這個(gè)方法構(gòu)造出來(lái)的也可能是語(yǔ)句2或者語(yǔ)句4,比如v_newstype的值為“1;drop table news”或“社會(huì)新聞';drop table news--”,如果我們的疏忽讓別人給利用了,就會(huì)給我們?cè)斐删薮蟮膿p失,SQL注入式攻擊正是利用了我們的這個(gè)疏忽,所以說(shuō)SQL注入式攻擊的根源來(lái)自開(kāi)發(fā)人員的編碼不當(dāng)和你所使用的平臺(tái)、開(kāi)發(fā)工具以及系統(tǒng)架構(gòu)等等都沒(méi)有任何直接的關(guān)系。
既然SQL注入式攻擊是由于編碼人員編碼不當(dāng)造成的,那究竟怎么樣的編碼才是恰當(dāng)?shù)木幋a才不會(huì)受到SQL注入攻擊呢,下一篇我們將繼續(xù)介紹。
相關(guān)文章
批量替換sqlserver數(shù)據(jù)庫(kù)掛馬字段并防范sql注入攻擊的代碼
有時(shí)候網(wǎng)站sqlserver數(shù)據(jù)庫(kù)被掛馬了,網(wǎng)上的很多軟件與方法都是針對(duì)text小于8000的,這里的方法貌似可行,需要的朋友可以參考下。2010-04-04mssql關(guān)于一個(gè)表格結(jié)構(gòu)的另外一種顯示(表達(dá)意思不變)
mssql關(guān)于一個(gè)表格結(jié)構(gòu)的另外一種顯示(表達(dá)意思不變)接下來(lái)介紹實(shí)現(xiàn)方法,感興趣的朋友可以了解下哦2013-01-01SQL Server2012數(shù)據(jù)庫(kù)備份和還原的教程
這篇文章主要為大家詳細(xì)介紹了SQL Server2012數(shù)據(jù)庫(kù)備份和還原的教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-03-03Sql Server數(shù)據(jù)庫(kù)實(shí)現(xiàn)表中字段的列加密
本文主要介紹了Sql Server數(shù)據(jù)庫(kù)實(shí)現(xiàn)表中字段的列加密,主要包括利用證書(shū)對(duì)數(shù)據(jù)進(jìn)行加密和解密,利用非對(duì)稱(chēng)密鑰對(duì)數(shù)據(jù)進(jìn)行加密和解密,利用對(duì)稱(chēng)密鑰對(duì)數(shù)據(jù)進(jìn)行加密和解密,感興趣的可以了解一下2023-10-10win2008 r2 安裝sql server 2005/2008 無(wú)法連接服務(wù)器解決方法
在與 SQL Server 建立連接時(shí)出現(xiàn)與網(wǎng)絡(luò)相關(guān)的或特定于實(shí)例的錯(cuò)誤。未找到或無(wú)法訪問(wèn)服務(wù)器。請(qǐng)驗(yàn)證實(shí)例名稱(chēng)是否正確并且 SQL Server 已配置為允許遠(yuǎn)程連接2015-01-01監(jiān)控 log文件大小的存儲(chǔ)過(guò)程
用來(lái)監(jiān)控 log文件大小的存儲(chǔ)過(guò)程,需要的朋友可以參考下。2010-07-07SQLServer2005 按照日期自動(dòng)備份的方法
SQLServer2005如何備份,按照日期自動(dòng)備份2010-07-07