SQL注入攻擊的種類和防范手段IT專家網(wǎng)_第1頁
SQL注入攻擊的種類和防范手段IT專家網(wǎng)_第2頁
SQL注入攻擊的種類和防范手段IT專家網(wǎng)_第3頁
SQL注入攻擊的種類和防范手段IT專家網(wǎng)_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、觀察近來的一些安全事件及其后果,安全專家們已經(jīng)得到一個結(jié)論,這些威脅主要是通過SQL注入造成的。雖然前面有許多文章討論了SQL注入,但今天所討論的內(nèi)容也許可幫助你檢查自己的服務(wù)器,并采取相應(yīng)防范措施。SQL注入攻擊的種類知彼知己,方可取勝。首先要清楚SQL注入攻擊有哪些種類。沒有正確過濾轉(zhuǎn)義字符在用戶的輸入沒有為轉(zhuǎn)義字符過濾時,就會發(fā)生這種形式的注入式攻擊,它會被傳遞給一個SQL語句。這樣就會導(dǎo)致應(yīng)用程序的終端用戶對數(shù)據(jù)庫上的語句實施操縱。比方說,下面的這行代碼就會演示這種漏洞:statement:=SELECT*FROMusersWHEREname=+userName+;這種代碼的設(shè)計目的是

2、將一個特定的用戶從其用戶表中取出,但是,如果用戶名被一個惡意的用戶用一種特定的方式偽造,這個語句所執(zhí)行的操作可能就不僅僅是代碼的作者所期望的那樣了。例如,將用戶名變量(即username)設(shè)置為:aort=t,此時原始語句發(fā)生了變化:SELECT*FROMusersWHEREname=aORt=t;如果這種代碼被用于一個認(rèn)證過程,那么這個例子就能夠強迫選擇一個合法的用戶名,因為賦值t=t永遠是正確的。在一些SQL服務(wù)器上,如在SQLServer中,任何一個SQL命令都可以通過這種方法被注入,包括執(zhí)行多個語句。下面語句中的username的值將會導(dǎo)致刪除“users”表,又可以從“data”表中

3、選擇所有的數(shù)據(jù)(實際上就是透露了每一個用戶的信息)。a;DROPTABLEusers;SELECT*FROMdataWHEREnameLIKE%這就將最終的SQL語句變成下面這個樣子:SELECT*FROMusersWHEREname=a;DROPTABLEusers;SELECT*FROMDATAWHEREnameLIKE%;其它的SQL執(zhí)行不會將執(zhí)行同樣查詢中的多個命令作為一項安全措施。這會防止攻擊者注入完全獨立的查詢,不過卻不會阻止攻擊者修改查詢。2.Incorrecttypehandling如果一個用戶提供的字段并非一個強類型,或者沒有實施類型強制,就會發(fā)生這種形式的攻擊。當(dāng)在一個SQ

4、L語句中使用一個數(shù)字字段時,如果程序員沒有檢查用戶輸入的合法性(是否為數(shù)字型)就會發(fā)生這種攻擊。例如:statement:=SELECT*FROMdataWHEREid=+a_variable+;從這個語句可以看出,作者希望a_variable是一個與“id”字段有關(guān)的數(shù)字。不過,如果終端用戶選擇一個字符串,就繞過了對轉(zhuǎn)義字符的需要。例如,將a_variable設(shè)置為:1;DROPTABLEusers,它會將“users”表從數(shù)據(jù)庫中刪除,SQL語句變成:SELECT*FROMDATAWHEREid=1;DROPTABLEusers;3.數(shù)據(jù)庫服務(wù)器中的漏洞有時,數(shù)據(jù)庫服務(wù)器軟件中也存在著漏洞

5、,如MYSQL服務(wù)器中mysql_real_escape_string()函數(shù)漏洞。這種漏洞允許一個攻擊者根據(jù)錯誤的統(tǒng)一字符編碼執(zhí)行一次成功的SQL注入式攻擊。盲目SQL注入式攻擊當(dāng)一個Web應(yīng)用程序易于遭受攻擊而其結(jié)果對攻擊者卻不見時,就會發(fā)生所謂的盲目SQL注入式攻擊。有漏洞的網(wǎng)頁可能并不會顯示數(shù)據(jù),而是根據(jù)注入到合法語句中的邏輯語句的結(jié)果顯示不同的內(nèi)容。這種攻擊相當(dāng)耗時,因為必須為每一個獲得的字節(jié)而精心構(gòu)造一個新的語句。但是一旦漏洞的位置和目標(biāo)信息的位置被確立以后,一種稱為Absinthe的工具就可以使這種攻擊自動化。條件響應(yīng)注意,有一種SQL注入迫使數(shù)據(jù)庫在一個普通的應(yīng)用程序屏幕上計算

6、一個邏輯語句的值:SELECTbooktitleFROMbooklistWHEREbookId=OOk14cdAND1=1這會導(dǎo)致一個標(biāo)準(zhǔn)的面面,而語句SELECTbooktitleFROMbooklistWHEREbookId=OOk14cdAND1=2在頁面易于受到SQL注入式攻擊時,它有可能給出一個不同的結(jié)果。如此這般的一次注入將會證明盲目的SQL注入是可能的,它會使攻擊者根據(jù)另外一個表中的某字段內(nèi)容設(shè)計可以評判真?zhèn)蔚恼Z句。條件性差錯如果WHERE語句為真,這種類型的盲目SQL注入會迫使數(shù)據(jù)庫評判一個引起錯誤的語句,從而導(dǎo)致一個SQL錯誤。例如:SELECT1/0FROMusersWHE

7、REusername=Ralph顯然,如果用戶Ralph存在的話,被零除將導(dǎo)致錯誤。時間延誤時間延誤是一種盲目的SQL注入,根據(jù)所注入的邏輯,它可以導(dǎo)致SQL引擎執(zhí)行一個長隊列或者是一個時間延誤語句。攻擊者可以衡量頁面加載的時間,從而決定所注入的語句是否為真。以上僅是對SQL攻擊的粗略分類。但從技術(shù)上講,如今的SQL注入攻擊者們在如何找出有漏洞的網(wǎng)站方面更加聰明,也更加全面了。出現(xiàn)了一些新型的SQL攻擊手段。黑客們可以使用各種工具來加速漏洞的利用過程。我們不妨看看theAsproxTrojan這種木馬,它主要通過一個發(fā)布郵件的僵尸網(wǎng)絡(luò)來傳播,其整個工作過程可以這樣描述:首先,通過受到控制的主機

8、發(fā)送的垃圾郵件將此木馬安裝到電腦上,然后,受到此木馬感染的電腦會下載一段二進制代碼,在其啟動時,它會使用搜索引擎搜索用微軟的ASP技術(shù)建立表單的、有漏洞的網(wǎng)站。搜索的結(jié)果就成為SQL注入攻擊的靶子清單。接著,這個木馬會向這些站點發(fā)動SQL注入式攻擊,使有些網(wǎng)站受到控制、破壞。訪問這些受到控制和破壞的網(wǎng)站的用戶將會受到欺騙,從另外一個站點下載一段惡意的JavaScript代碼。最后,這段代碼將用戶指引到第三個站點,這里有更多的惡意軟件,如竊取口令的木馬。以前,我們經(jīng)常警告或建議Web應(yīng)用程序的程序員們對其代碼進行測試并打補丁,雖然SQL注入漏洞被發(fā)現(xiàn)和利用的機率并不太高。但近來攻擊者們越來越多地

9、發(fā)現(xiàn)并惡意地利用這些漏洞。因此,在部署其軟件之前,開發(fā)人員應(yīng)當(dāng)更加主動地測試其代碼,并在新的漏洞出現(xiàn)后立即對代碼打補丁。防御和檢查SQL注入的手段1.使用參數(shù)化的過濾性語句要防御SQL注入,用戶的輸入就絕對不能直接被嵌入到SQL語句中。恰恰相反,用戶的輸入必須進行過濾,或者使用參數(shù)化的語句。參數(shù)化的語句使用參數(shù)而不是將用戶輸入嵌入到語句中。在多數(shù)情況中,SQL語句就得以修正。然后,用戶輸入就被限于一個參數(shù)。下面是一個使用Java和JDBCAPI例子:PreparedStatementprep=conn.prepareStatement(SELECT*FROMUSERSWHEREPASSWORD

10、=?);prep.setString(1,pwd);總體上講,有兩種方法可以保證應(yīng)用程序不易受到SQL注入的攻擊,一是使用代碼復(fù)查,二是強迫使用參數(shù)化語句的。強迫使用參數(shù)化的語句意味著嵌入用戶輸入的SQL語句在運行時將被拒絕。不過,目前支持這種特性的并不多。如H2數(shù)據(jù)庫引擎就支持。避免使用解釋程序因為這正是黑客們借以執(zhí)行非法命令的手段。避免出現(xiàn)一些詳細的錯誤消息因為黑客們可以利用這些消息。要使用一種標(biāo)準(zhǔn)的輸入確認(rèn)機制來驗證所有的輸入數(shù)據(jù)的長度、類型、語句、企業(yè)規(guī)則等。使用專業(yè)的漏洞掃描工具但防御SQL注入攻擊也是不夠的。攻擊者們目前正在自動搜索攻擊目標(biāo)并實施攻擊。其技術(shù)甚至可以輕易地被應(yīng)用于其它的Web架構(gòu)中的漏洞。企業(yè)應(yīng)當(dāng)投資于一些專業(yè)的漏洞掃描工具,如大名鼎鼎的Acunetix的Web漏洞掃描程序等。一個完善的漏洞掃描程序不同于網(wǎng)絡(luò)掃描程序,它專門查找網(wǎng)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論