李虎軍, 林學華, 張遼寧
(裝甲兵學院, 蚌埠 233050)
?
SQL注入攻擊與防護探析
李虎軍, 林學華, 張遼寧
(裝甲兵學院,蚌埠233050)
摘要:SQL注入攻擊是針對網(wǎng)站中存在的漏洞,利用特殊構(gòu)造的SQL語句對網(wǎng)站前端應用、后臺管理、數(shù)據(jù)庫系統(tǒng)、操作系統(tǒng)進行入侵、竊密、破壞的過程。本文著重介紹了SQL注入攻擊的原理、攻擊常用方式方法,并在此基礎上對如何防范SQL注入攻擊給出了一些防御方法,以期抵御大部分的SQL注入攻擊,更好地保護Web網(wǎng)站安全。
關(guān)鍵詞:SQL注入;網(wǎng)站;數(shù)據(jù)庫;攻擊
隨著Internet互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,萬維網(wǎng)(World Wide Web,WWW)的出現(xiàn)使網(wǎng)站數(shù)量呈指數(shù)規(guī)律增長。網(wǎng)站在給人們提供豐富多彩的信息的同時,網(wǎng)站攻擊事件層出不窮。大多數(shù)網(wǎng)站都基于數(shù)據(jù)庫的支持,開放式Web應用程序安全項目(Open Web Application Security Project Top 10 for 2013)報告稱,注入漏洞攻擊已成為十大網(wǎng)站攻擊之首。信息安全和風險管理公司NTTCom Security發(fā)布的《2015全球智能威脅風險報告》稱,SQL注入攻擊是目前黑客攻擊網(wǎng)絡的最常見方式之一[1]。
SQL注入就是利用現(xiàn)有應用程序,將(惡意)的SQL命令注入到網(wǎng)站后臺數(shù)據(jù)庫引擎執(zhí)行。SQL注入(SQL Injection)攻擊以網(wǎng)站數(shù)據(jù)庫為目標,通常利用Web應用程序?qū)μ厥庾址^濾不完全的缺陷,通過精心構(gòu)造的字符串達到非法訪問網(wǎng)站數(shù)據(jù)庫內(nèi)容或在數(shù)據(jù)庫中執(zhí)行命令的目的。
SQL注入攻擊主要方式有:直接將SQL代碼插入到參數(shù)中,這些參數(shù)會被置入SQL命令中加以執(zhí)行;還可以將惡意代碼插入到字符串中,之后將這些字符串保存在數(shù)據(jù)庫的數(shù)據(jù)表中或?qū)⑵渥鳛樵獢?shù)據(jù),當將該字符串置入動態(tài)SQL命令中時,惡意代碼被執(zhí)行。SQL注入攻擊的目標是數(shù)據(jù)庫管理系統(tǒng),通過數(shù)據(jù)庫進而攻擊其所在的服務器。通過一個示例簡要說明SQL注入攻擊。
假設有語句strSQL="SELECT*FROM user WHERE name=′"+username+"′andpwd=′"+ PassWord+"′;"。該語句含義是:將用戶輸入的用戶名(存儲在變量username中)和登錄口令(存儲在變量PassWord中)進行數(shù)據(jù)庫檢索驗證,如果相應的用戶名和登錄口令正確,則該語句能返回正確的檢索信息,否則,檢索結(jié)果為空(意味著身份驗證失?。?。對該語句而言通過以下方式可實現(xiàn)注入攻擊。
將username賦值如下:username="1′OR′1′=′1";將PassWord賦值如下:PassWord="1′OR′1′=′1",則程序在進行變量替換后,strSQL中實際存放的字符串為:
strSQL="SELECT*FROM user WHERE name=′1′OR′1′=′1′and pwd=′1′OR′1′=′1′;"。表達式name=′1′OR′1′=′1′值為真;表達式pw=′1′OR′1′=′1′值為真;則strSQL中實際存放的字符串相當于:strSQL="SELECT*FROM user;",就相當于不需對用戶輸入的用戶名和密碼進行驗證,繞過了系統(tǒng)的登錄驗證。
注入攻擊的過程通常可以歸納為以下幾步:發(fā)現(xiàn)SQL注入位置;判斷Web后臺數(shù)據(jù)庫類型;確定xp_cmdshell可執(zhí)行情況;發(fā)現(xiàn)Web虛擬目錄;上傳ASP木馬;得到目標計算機系統(tǒng)管理員權(quán)限。
(一)注入漏洞探測
一般來說,只要是帶有參數(shù)的動態(tài)網(wǎng)頁,并且此網(wǎng)頁訪問了數(shù)據(jù)庫,那么就有可能存在SQL注入漏洞。如果程序員安全意識不強,沒有過濾輸入的一些特殊字符,則存在SQL注入的可能性就很大。
1.獲取SQL注入點
常用的探測SQL注入點的方法是在網(wǎng)頁URL地址處添加諸如“and 1=1”、“and 1=2”以及“′”等一些特殊字符,通過瀏覽器所返回的信息來判斷是否存在SQL注入點。以http://xx.xx.xx.xx/abc.asp?id=XX為樣例進行分析,以整型參數(shù)為例進行SQL注入漏洞探測。通常abc.asp中的SQL語句大致如下:select* from表名where字段=XX
可以用以下步驟測試SQL注入漏洞是否存在。如果以下三種情況全部滿足,則abc.asp中一定存在SQL注入漏洞。
(1)在URL鏈接中附加一個單引號,即http://xx. xx.xx.xx/abc.asp?id=XX′,此時abc.asp中的SQL語句變成如下形式:select*from表名where字段=XX′
測試結(jié)果為abc.asp運行異常。
(2)在URL鏈接中附加字符串“and 1=1”,即http: //xx.xx.xx.xx/abc.asp?id=XX and 1=1
測試結(jié)果為abc.asp運行正常,而且與http://xx. xx.xx.xx/abc.asp?id=XX運行結(jié)果相同。
(3)在URL鏈接中附加字符串“and 1=2”,即http: //xx.xx.xx.xx/abc.asp?id=XX and 1=2
測試結(jié)果為abc.asp運行異常。
2.某些特殊情況的注入點探測
有時網(wǎng)站設計者會在程序中過濾掉單引號等敏感字符,以防止SQL注入。如果網(wǎng)站設計者對單引號進行了嚴格的過濾,則字符型參數(shù)的SQL注入攻擊將不能成功。對于此種情況,可以用以下幾種方法嘗試。
(1)大小寫混合法。由于VBS并不區(qū)分大小寫,而程序員在過濾時通常過濾全部大寫字符串,或過濾全部小寫字符串,而大小寫混合往往會被忽視。SQL注入攻擊者可用SELect代替select、SELECT等。
(2)UNICODE法。在IIS中以UNICODE字符集提高通用性,則SQL注入攻擊者可以在IE瀏覽器中將輸入的字符串變成UNICODE字符串進行輸入,如將+換成%2B,將空格換成%20等。
(3)ASCII碼替代法。SQL注入攻擊者可以把輸入的部分或全部字符全部用ASCII碼代替,如將字符A換成chr(65),將字符a換成chr(97)等。
(二)獲取數(shù)據(jù)庫類型與版本
識別被攻擊Web應用所用數(shù)據(jù)庫的類型及版本,Web應用的開發(fā)語言提供了一個線索,例如基于ASP或者ASP.NET技術(shù)的Web應用一般情況下用Microsoft SQL SERVER作為后臺數(shù)據(jù)庫;基于J2EE技術(shù)的Web應用通常使用Oracle或MySQL數(shù)據(jù)庫,等等。Web應用的部署環(huán)境提供了第二個線索,例如運行于Windows操作系統(tǒng)的IIS應用服務器,標志著Web應用可能采用Microsoft SQL Server作為后臺數(shù)據(jù)庫;運行于Linux操作系統(tǒng)的Apache應用服務器,標志著Web應用可能使用MySQL數(shù)據(jù)庫。當然,不能僅僅依靠這兩個線索來判斷數(shù)據(jù)庫類型,因為Web應用開發(fā)者會根據(jù)特定情況組合不同的開發(fā)語言及部署環(huán)境。
如果Web應用沒有向用戶屏蔽SQL語句錯誤消息,則通過一個簡單的SQL語句即可識別數(shù)據(jù)庫類型。例如,我們添加一個單引號作為注入?yún)?shù),則數(shù)據(jù)庫服務器會產(chǎn)生語法錯誤消息,根據(jù)返回錯誤消息的不同就可以判斷是何種數(shù)據(jù)庫。還可以在http:// xx.xx.xx.xx/abc.asp?id=1后面加38個0,則執(zhí)行后反饋:Microsoft OLE DB Provider for SQL Server數(shù)字′100000000000000000000000000000000000000′超出數(shù)字表示范圍,這里通過錯誤信息將數(shù)據(jù)庫類型顯示出來。
如果Web應用屏蔽了SOL語句錯誤消息,則需要利用不同數(shù)據(jù)庫的獨特語法來識別數(shù)據(jù)庫類型。例如,Microsoft SQL Server支持select′a′+′b′;Oracle數(shù)據(jù)庫支持select′a′||′b′和select concat(′a′,′b′)。多次嘗試不同的連接語法,就可以推斷該web應用所使用的數(shù)據(jù)庫類型。
識別了數(shù)據(jù)庫類型之后,由于數(shù)據(jù)庫都允許通過查詢語句獲取版本信息來得到數(shù)據(jù)庫的具體版本信息,例如Microsoft SQL SERVER,發(fā)送select @@version獲得SQL Server的版本號,等等。
(三)判斷目標網(wǎng)站可執(zhí)行情況
若當前連接數(shù)據(jù)庫的用戶權(quán)限是SA權(quán)限,且master.dbo.xp_cmdshell擴展存儲過程(調(diào)用此存儲過程可以直接操作系統(tǒng)的shell)能夠正確執(zhí)行,則整個計算機可以通過以下幾種方法完全控制,則以后的所有步驟都可以省略。
(1)HTTP://xx.xx.xx.xx/abc.asp?id=XX;exec master.. xp_cmdshell"netuserabc123/add"--
則URL地址中包含的SQL語句就可以在數(shù)據(jù)庫中創(chuàng)建一個名為abc、登錄口令為123的用戶。
(2)HTTP://xx.xx.xx.xx/abc.asp?id=XX;exec master.. xp_cmdshell"net localgroup administrators abc/add" --,則URL地址中包含的SQL語句將用戶abc添加到系統(tǒng)的administrators組中,成為administrator用戶。
(3)HTTP://xx.xx.xx.xx/abc.asp?id=XX;backup dadabase數(shù)據(jù)庫名to disk=′c:inetpubwwwrootaaa′,則URL地址中包含的SQL語句將指定數(shù)據(jù)庫備份到c: inetpubwwwroot目錄中,并以aaa為名保存。
(四)發(fā)現(xiàn)目標網(wǎng)站W(wǎng)eb虛擬目錄
只有找到Web虛擬目錄,才能確定放在ASP木馬的位置,進而得到USER權(quán)限,通常有兩種方法:
(1)根據(jù)經(jīng)驗猜解。一般來說,WEB虛擬目錄通常是c:
netpubwwroot;d:
netpubwwroot;e:
netpubwwroot等,而可執(zhí)行虛擬目錄是c:
netpubcripts;d:
netpubcripts;e:
netpubcripts等。
(2)遍歷系統(tǒng)的目錄結(jié)構(gòu),分析結(jié)果發(fā)現(xiàn)Web虛擬目錄。首先創(chuàng)建臨時表temp,接下來:
1)利用xp_availablemedia獲取當前所有驅(qū)動器,并存入temp1表中;
2)利用xp_subdirs獲得子目錄列表,并存入temp2表中;
3)利用xp_dirtree獲得所有子目錄的目錄樹結(jié)構(gòu),并存入temp3表中。
從上述tempX表中,可以詳細查詢相關(guān)所需信息。
(五)破解用戶名與口令并上傳ASP木馬
所謂ASP木馬,就是一段有特殊功能的ASP代碼,并放入Web虛擬目錄的scripts下,遠程客戶通過IE瀏覽器就可以執(zhí)行該段代碼,進而得到系統(tǒng)的USER權(quán)限,實現(xiàn)對系統(tǒng)的初步控制。許多Web網(wǎng)站為了維護方便,提供了遠程管理功能,對于不同用戶有不同的訪問權(quán)限??梢岳米⑷胝Z句,將網(wǎng)站數(shù)據(jù)庫中用戶名與密碼讀出。要進行用戶的口令猜解,首先找到系統(tǒng)存放用戶名和密碼的表,這里假設表名為pwd_table。pwd_table表中一定有一個用戶名字段和一個密碼字段,只有得到這兩個字段的名稱,才可能得到這兩個字段的內(nèi)容。
(1)猜測用戶名字段和密碼字段名稱。
通過http://xx.xx.xx.xx/abc.asp?id=XX and(select top 1 col_name(object_id(′pwd_table′),1)from TestDB.dbo.sysobjects)>0進行注入。其中select top 1 col_name(object_id(′pwd_table′),1)from TestDB.dbo. sysobjects是從系統(tǒng)表sysobjects中得到已知pwd_table表的第一個字段名,當與整數(shù)進行比較時,abc.asp執(zhí)行異常,但在異常中卻可以發(fā)現(xiàn)字段的名稱。把col_name(object_id(′pwd_table′),1)中的1依次替換為2,3,4,……就可以得到所有的字段名稱。
(2)猜測用戶名和密碼
可以采用ASCII碼逐字解碼,先猜測字段的長度,然后異常猜測出每一位的值。以猜解用戶名為例。http://xx.xx.xx.xx/abc.asp?id=XX and(select top 1用戶名字段from TestDB.dbo.pwd_table)=YY(YY= 1,2,3,……),若YY為i值且abc.asp運行正常,則i就是第一個用戶名的長度。
猜測用戶名的第一個字符(猜測密碼同理):http://xx.xx.xx.xx/abc.asp?id=XX and(select top 1 ASCII(substring(username,1,1)from TestDB.dbo. pwd_table)=YY,若YY為某i值且abc.asp運行正常,則i就是對應字符的ASCII碼值。
獲取用戶名與密碼后,先建立一個臨時表,在表中輸入一個ASP木馬,然后利用SQL的BCP命令將表的內(nèi)容導出文本文件并存放到指定位置,從而上傳一個ASP木馬文件。
(六)修改目標網(wǎng)站用戶權(quán)限
通常ASP木馬只有USER權(quán)限,在注入ASP木馬后,可以采用以下多種手段提升用戶權(quán)限。
(1)通過上傳的木馬,修改開機自動運行的.ini文件,當目標主機重啟后,即可提升用戶權(quán)限;
(2)下載SAM文件(Windows系統(tǒng)中用戶帳戶數(shù)據(jù)文件,包含所有用戶的登錄名與口令),破解并獲取操作系統(tǒng)的所有用戶名和密碼;
(3)利用xp_regread擴展存儲過程修改系統(tǒng)注冊表,讀取SAM值,允許建立空連接,開機自動運行程序等。
至此,目標網(wǎng)站計算機系統(tǒng)的大門已經(jīng)被黑客打開。
由于SQL注入攻擊的Web應用程序運行在應用層,因而對于絕大多數(shù)防火墻來說,這種攻擊是“合法”的(對Web應用防火墻例外)。問題的解決只能依賴于完善編程。因此在編寫Web應用程序時,應遵循以下原則,以減少SQL注入漏洞。
(一)使用參數(shù)化語句
Web網(wǎng)站容易受到SQL注入攻擊的根本原因是將SQL語句偽裝成字符串使數(shù)據(jù)庫執(zhí)行了動態(tài)構(gòu)造的SQL語句。作為一種更加安全的動態(tài)字符串構(gòu)造方法,大多數(shù)現(xiàn)代編程語言和數(shù)據(jù)庫訪問API可以使用占位符或綁定變量來向數(shù)據(jù)庫查詢提供參數(shù),而不是直接對用戶輸入進行操作,即使用戶輸入?yún)?shù)中包含分號、注釋、select等SQL關(guān)鍵字,也被轉(zhuǎn)義當做一般字符處理,這種處理通常被稱為參數(shù)化查詢。參數(shù)化查詢可以避免或解決Web應用中常見的SQL注入問題,并可以替換現(xiàn)有的不安全的動態(tài)查詢。參數(shù)化查詢使用預處理語句來優(yōu)化查詢,相比動態(tài)查詢擁有更高的效率。
(二)進行輸入驗證
未對用戶輸入?yún)?shù)進行驗證,使其包含的惡意代碼被執(zhí)行是造成SQL注入攻擊的主要原因。輸入驗證是指Web應用在接收到用戶輸入?yún)?shù)后,對其進行驗證以確保其符合Web應用定義標準的過程。如果對于用戶的輸入進行了驗證,則能有效避免SQL注入的發(fā)生。有兩種不同的輸入驗證方法:白名單驗證、黑名單驗證。
白名單驗證是只接收事先定義好的數(shù)據(jù)范圍,比如要驗證輸入的是身份證號,則該輸入值應該只包含數(shù)字、大寫字母,總長度為15或18位,可以寫一個身份證號的正則表達式來實現(xiàn)驗證。
黑名單驗證是拒絕事先定義好的非法字符(在檢測前將所有字符串進行大小寫格式轉(zhuǎn)換,避免攻擊者通過大小寫混寫關(guān)鍵字躲避檢測),具體包括INSERT、DELETE、分號等SQL關(guān)鍵字。當用戶輸入的參數(shù)包含這些非法字符時,黑名單驗證通常會拒絕它。兩種輸入驗證方法相比,白名單驗證功能更強大一些,但需要為每一個輸入?yún)?shù)都定義一個匹配規(guī)則,工作量巨大。黑名單驗證功能要弱一些,因為潛在的非法字符列表非常大,檢索起來速度比較慢。
(三)過濾特殊符號
從前面的介紹中可以看出,在SQL注入攻擊前的漏洞探測時,攻擊者需要在提交的參數(shù)中包含“′”、“and”等特殊字符;在實施SQL注入時,SQL中往往需要提交“;”、“--”、“select”、“create table”、“drop”、“add”、“xp_”、“sp_”等字符構(gòu)造相應的SQL注入語句。因此,防范SQL注入攻擊的有效的方法是對用戶的輸入進行檢查,根據(jù)參數(shù)的類型,可對單引號、分號、連接號等進行轉(zhuǎn)換或過濾,這樣就可以防止很多SQL注入攻擊。僅依靠過濾用戶數(shù)據(jù)中的單引號來防御SQL注入的話,那么攻擊者很可能非法提交一些特殊的編碼字符,在提交時繞過網(wǎng)頁程序的字符過濾。這些編碼字符經(jīng)過網(wǎng)站服務器的二次編碼后,就會重新生成單引號或空格之類的字符,構(gòu)成合法的SQL注入語句,完成攻擊??梢酝ㄟ^服務器端的存儲過程對輸入內(nèi)容進行檢查過濾。
Createprocedurefilter_string@string_input varchar(80),@string_output varchar(80)output
As
Begin
If charindex(′create′,lower(@string_input))>0 or
charindex(′grant′,lower(@string_input))>0 or
charindex(′select′,lower(@string_input))>0 or
charindex(′xp_cmdshell′,lower(@string_input))>0 or
charindex(′add′,lower(@string_input))>0 or
……
Return
End
(四)使用類安全的參數(shù)編碼機制
網(wǎng)站在構(gòu)造動態(tài)SQL語句時,一定要使用類安全(Type-safe)的參數(shù)編碼機制。大多數(shù)的數(shù)據(jù)庫API,包括ADO和ADO.NET都允許用戶指定所提供參數(shù)的確切類型(如字符串、整數(shù)、日期等),這樣可以保證這些參數(shù)都能被正確地編碼,以免被黑客利用。例如,在ADO.NET中,對于動態(tài)SQL,可以按下面的格式進行編程。
Dim SSN as String=Request QueryString("SSN")
DimcmdAsnewSqlCommand("SELECT au_lname,au_fname FROM authors WHERE aujd= @au_id")
Dimparam=newSqlParameter("au_id", SqlDbType.VarChar)
Param.Value=SSN
cmd.Parameters.Add(param)
這將防止有人試圖偷偷注入另外的SQL表達式,以及避免其他數(shù)據(jù)問題(例如不正確地轉(zhuǎn)換數(shù)值類型等)。
(五)敏感數(shù)據(jù)加密存儲
禁止將敏感性數(shù)據(jù)以明文存放在數(shù)據(jù)庫中,通過哈希函數(shù)加密后存放,或通過RSA提供的加解密API在讀取/寫入數(shù)據(jù)時進行解密/加密處理,進行這樣即使數(shù)據(jù)庫被SQL注入漏洞攻擊,也會減少泄密的風險。
(六)遵循最小特權(quán)原則
只給訪問數(shù)據(jù)庫的Web應用所需的最低權(quán)限。例如,如果Web應用不需要訪問某些表,那么應確認它沒有訪問這些表的權(quán)限;如果Web應用只需要讀權(quán)限,則應確認已禁止它對此表的插入、更新、刪除等權(quán)限。數(shù)據(jù)庫的啟動需要配置相關(guān)底層操作系統(tǒng)賬戶,如果數(shù)據(jù)庫配置的底層操作系統(tǒng)賬戶屬于系統(tǒng)管理員組,則攻擊者一旦獲取數(shù)據(jù)庫的控制權(quán)就可以利用操作系統(tǒng)的文件操作、網(wǎng)絡連接等,從而造成更大威脅。因此,一定要確保運行在操作系統(tǒng)上的數(shù)據(jù)庫軟件所屬賬號配置成擁有最小權(quán)限。另外,除非有特殊用途,應關(guān)閉數(shù)據(jù)庫中的額外功能,例如系統(tǒng)管理對象、執(zhí)行操作系統(tǒng)命令和產(chǎn)生網(wǎng)絡連接等。比如在SQL SERVER中,應當考慮關(guān)閉危險的存儲過程xp_cmdshell以及xp_reg*等。而且要確保數(shù)據(jù)庫軟件更新到了最新并打了補丁。特別注意,web應用程序所使用的存儲過程和函數(shù)的權(quán)限,也要遵循最小特權(quán)原則,并且最好只賦予存儲過程和函數(shù)讀的權(quán)限,限制修改和刪除權(quán)限。
(七)網(wǎng)站服務器設置
SQL注入是根據(jù)服務器給出的錯誤信息入侵的,服務器端配置應將錯誤提示信息的反饋功能關(guān)閉,使得攻擊者只能進行盲注入,大大提高攻擊的難度。同時,要充分利用IIS日志服務,有利于及時發(fā)現(xiàn)SQL注入攻擊痕跡。數(shù)據(jù)庫、表、字段的命名要避免采用默認或通用的名稱,避免給注入者留下可乘之機。將數(shù)據(jù)庫管理系統(tǒng)中系統(tǒng)自帶的數(shù)據(jù)庫(例如,northwind、pubs等)刪除。針對SQL注入攻擊,在系統(tǒng)中適當設置假用戶,誘騙攻擊者,增加攻擊難度。
將網(wǎng)站的執(zhí)行權(quán)限設置為“純腳本”,對于通過網(wǎng)站后臺管理中心上傳的存放文本的目錄,執(zhí)行權(quán)限均設置為“無”,即使網(wǎng)站被上傳了木馬也運行不了。另外,不啟用網(wǎng)站的父目錄,禁用不必要的服務器擴展,Web服務器關(guān)閉不必要的服務,Web管理員必須通過本地登錄方式管理Web服務器。
SQL注入攻擊的危害日益被人們關(guān)注,但是仍然有很多的Web應用程序存在這種漏洞,而且SQL注入攻擊技術(shù)與其他攻擊手段組合起來,更加難以防范。SQL注入是一種綜合性攻擊,我們應該從網(wǎng)站程序設計、Web服務器、數(shù)據(jù)庫管理等多方面加以規(guī)范和防御,最大限度地保障網(wǎng)站系統(tǒng)安全。
參考文獻:
[1]OWASP Top10 for 2013[R].https://www.owasp.org/index. php.
[2]王希忠等.Web應用程序中SQL注入攻防策略的研究 [J].信息安全與技術(shù),2011,(9).
[3]黃健.計算機信息安全技術(shù)及防護[J].信息安全與技術(shù),2012,(4).
(責任編輯:魏樹峰)
中圖分類號:TP393
文獻標識碼:A
[文章編號]1671-802X(2016)02-0018-06
收稿日期:*2016-02-23
作者簡介:李虎軍(1969-),男,內(nèi)蒙古烏海人,副教授,研究方向:計算機網(wǎng)絡技術(shù)。E-mail:tkxylhj@163.com.
Analysis of SQL Injection Attack and Protection
LI Hu-jun,LIN Xue-hua,ZHANG Liao-ning
(Armored Force Institute,Bengbu 233050,Anhui)
Abstract:For the website loopholes,SQL Injection attack uses the SQL statement with a special structure to intrude,steal,and destroy the web application,web management,database system,and operating system.The principle and methods of the SQL Injection attack are presented.Based on the study,the defense methods are proposed to resist most SQL Injection attacks and better protect the security of the website.
Key words:SQL Injection;website;database system;attack