SQL 注入式攻擊的本質

2021-05-02 23:12:26 字數 1937 閱讀 4694

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注入式攻擊的根源來自開發人員的編碼不當和你所使用的平台、開發工具以及系統架構等等都沒有任何直接的關係。

SQL注入式攻擊

常見的sql注入式攻擊過程類如 某個asp.net web應用有乙個登入頁面,這個登入頁面控制著使用者是否有權訪問應用,它要求使用者輸入乙個名稱和密碼。登入頁面中輸入的內容將直接用來構造動態的sql命令,或者直接用作儲存過程的引數。下面是asp.net應用構造查詢的乙個例子 system.text....

SQL注入式攻擊

1 為什麼會存在這種攻擊方式?大多數的b s系統或者c s系統,都會涉及到資料的儲存和互動,資料一般儲存在sql server mysql等資料庫中。因此,常見的資料互動中,往往需要根據使用者輸入的資訊進行資料庫查詢等操作 1 使用者登入,需要根據使用者填寫的使用者名稱和密碼查詢資料庫進行校驗。2 ...

防範SQL注入式攻擊

拷貝別人的 sql注入式攻擊是利用是指利用上的漏洞,在目標伺服器上執行 sql命令以及進行其他方式的攻擊 動態生成 sql命令時沒有對使用者輸入的資料進行驗證是 sql注入攻擊得逞的主要原因。比如 如果你的查詢語句是select fromadminwhereusername user andpass...