SQL 注入式攻擊的本質(zhì)
正如微軟的大佬所說(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查詢(xún)語(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的作用是查詢(xún)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)文章
SQL注入滲透測(cè)試以及護(hù)網(wǎng)面試題和解答總結(jié)
現(xiàn)在SQL注入仍然是最流行的攻擊方法之一,開(kāi)發(fā)人員為此頭疼,下面這篇文章主要給大家介紹了關(guān)于SQL注入滲透測(cè)試以及護(hù)網(wǎng)面試題和解答的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-01-01數(shù)據(jù)庫(kù)設(shè)計(jì)的折衷方法
這篇文章主要介紹了數(shù)據(jù)庫(kù)設(shè)計(jì)的折衷方法,需要的朋友可以參考下2007-03-03Navicat快速導(dǎo)入和導(dǎo)出sql文件的方法
Navicat是MySQL非常好用的可視化管理工具,功能非常強(qiáng)大,能滿足我們?nèi)粘?shù)據(jù)庫(kù)開(kāi)發(fā)的所有需求。今天教大家如何導(dǎo)入和導(dǎo)出SQL文件,感興趣的朋友跟隨小編一起看看吧2021-05-05SQL注入技巧之顯注與盲注中過(guò)濾逗號(hào)繞過(guò)詳析
SQL注入的繞過(guò)技巧有很多,下面這篇文章主要給大家介紹了關(guān)于SQL注入技巧之顯注與盲注中過(guò)濾逗號(hào)繞過(guò)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-08-08數(shù)據(jù)庫(kù)命名規(guī)范小結(jié)
數(shù)據(jù)庫(kù)命名規(guī)范,在實(shí)際的數(shù)據(jù)庫(kù)開(kāi)發(fā)中,需要注意。2009-03-03SQL 隨機(jī)查詢(xún) 包括(sqlserver,mysql,access等)
SQL 隨機(jī)查詢(xún) 包括(sqlserver,mysql,access等),需要的朋友可以參考下,目的一般是為了隨機(jī)讀取數(shù)據(jù)庫(kù)中的記錄。2009-10-10復(fù)制數(shù)據(jù)庫(kù)表中兩個(gè)字段數(shù)據(jù)的SQL語(yǔ)句
今天為表新添加一個(gè)字段,但又想與表中的另一個(gè)字段值相同,由于數(shù)據(jù)過(guò)多想通過(guò)sql語(yǔ)句實(shí)現(xiàn),經(jīng)測(cè)試下面的這句話確實(shí)很好用2013-07-07dapper使用Insert或update時(shí)部分字段不映射到數(shù)據(jù)庫(kù)
我們?cè)谑褂胐apper的insert或update方法時(shí)可能會(huì)遇見(jiàn)一些實(shí)體中存在的字段但是,數(shù)據(jù)庫(kù)中不存在的字段,這樣在使用insert時(shí)就是拋出異常提示字段不存在,這個(gè)時(shí)候該怎么解決呢,下面給大家分享示例實(shí)體代碼,感興趣的朋友一起看看吧2023-12-12