韓宸望,林暉,黃川
(1. 福建師范大學數(shù)學與計算機科學學院,福建 福州 350117;2. 福建師范大學福建省網(wǎng)絡安全與密碼技術重點實驗室,福建 福州 350117)
基于SQL語法樹的SQL注入過濾方法研究
韓宸望1,2,林暉1,2,黃川1,2
(1. 福建師范大學數(shù)學與計算機科學學院,福建 福州 350117;2. 福建師范大學福建省網(wǎng)絡安全與密碼技術重點實驗室,福建 福州 350117)
Web應用的發(fā)展,使其涉及的領域也越來越廣。隨之而來的安全問題也越來越嚴重,尤其是 SQL注入攻擊,給Web應用安全帶來了巨大的挑戰(zhàn)。針對SQL注入攻擊,將基于SQL語法樹比較的安全策略引入用戶輸入過濾的設計中,提出了一種新的SQL注入過濾方法。實驗結果表明,該方法能夠有效地防止SQL注入攻擊,并有較高的攔截率和較低的誤報率。
SQL注入攻擊;Web安全;SQL語法樹;用戶輸入過濾
隨著互聯(lián)網(wǎng)技術的快速發(fā)展,Web技術在許多領域都得到了廣泛的應用,且已成為世界經(jīng)濟發(fā)展中的關鍵技術之一[1]。然而,隨著Web 技術在各個領域的普及和發(fā)展,也面臨著越來越多的安全威脅。并且,Web安全已經(jīng)成為網(wǎng)絡安全最主要的來源之一,因此,對Web安全的研究也就成為網(wǎng)絡安全領域的一個重點和熱點[2]。
目前,影響Web安全的因素眾多,其中,SQL注入是最高危的漏洞之一。在2008年~2010年,SQL注入攻擊連續(xù)3年在開放式Web應用程序安
全項目(OWASP,Open Web Application Security Project)年度十大攻擊行為中排名第一。在2011年~2015年,SQL注入攻擊連續(xù)5年排入OWASP年度十大攻擊行為。
基于上述分析,本文有機地融合了用戶輸入過濾措施和SQL語法樹結構比較方法,提出了一種基于SQL語法樹的SQL注入過濾方法。實驗結果表明,該方法可以有效地防止攻擊者繞過防注檢測,提高了對SQL注入攻擊的攔截;此外,在有效攔截SQL注入攻擊的同時,該方法還降低了過濾用戶輸入數(shù)據(jù)的誤報率。
2.1 SQL注入攻擊定義
SQL注入攻擊是一種由攻擊者通過影響應用程序向后臺數(shù)據(jù)庫傳遞的 SQL查詢而引發(fā)的攻擊。文獻[3]中將 SQL 注入攻擊定義為:攻擊者在應用程序的查詢語句中插入惡意指令來獲取數(shù)據(jù),即攻擊者利用現(xiàn)有應用程序,將包含惡意代碼的數(shù)據(jù)傳遞給數(shù)據(jù)庫,從而修改SQL自身的語法和功能,導致了惡意的SQL語句被SQL解釋器執(zhí)行而產(chǎn)生攻擊。
2.2 SQL注入攻擊攻擊原理
SQL注入攻擊是一種通過操縱Web 輸入來修改后臺 SQL語句以利用代碼進行攻擊的技術[4]。SQL 注入攻擊種類很多,不同種類的攻擊方式雖然有所區(qū)別,但是原理相同:即把通過在Web輸入中包含惡意代碼,使Web應用程序將惡意代碼拼接到動態(tài)SQL語句中,從而獲取信息。
下面通過一個萬能賬號的案例來說明 SQL注入攻擊。例如,一個登錄頁面,用戶輸入正確的賬號和密碼后,Web程序會查詢數(shù)據(jù)庫,如果存在此用戶并且密碼正確,將成功登錄;如果用戶不存在或密碼不正確,則會提示賬號或密碼錯誤。其中,該數(shù)據(jù)庫為MySQL數(shù)據(jù)庫,Users表中有3列,分別為:user name、password、type這種場景中,該登錄頁面的動態(tài)SQL語句為
select * from users where username='"+user name +"' and password='"+ password +"'"
攻擊者將使用賬號“'or 1=1 --”登錄,密碼為“123456”。此時,SQL語句變?yōu)?/p>
select * from users where user name ='1'or '1'='1'--and password ='123456'
其中,'1'='1'為永真,“--”為注釋符,注釋符后面的SQL語句不執(zhí)行。
經(jīng)上述分析,Web應用程序執(zhí)行的SQL語句恒成立,因此,攻擊者能夠在不知道賬號和密碼的情況下登錄系統(tǒng)。
2.3 防注檢繞過技術
Web 應用通常會使用部署在應用代碼中或以WAF、IDS 形式存在的輸入過濾器來防御SQL注入攻擊[5]。下面用以上文案例中的環(huán)境來介紹大小寫、SQL注釋、編碼和動態(tài)查詢等防注入檢測繞過技術。
1) 大小寫技術
因為數(shù)據(jù)庫使用不區(qū)分大小寫的方式處理SQL關鍵字,因此,大小寫技術通過變換攻擊字符串中字符的大小寫來繞過防注檢測。例如,如果下列輸入被阻止:'UNION SELECT 1, password,3 FROM users--??梢酝ㄟ^下列方法來繞過防注入檢測:'UnIoN SelEcT 1, password,3 fRom users --。
2) SQL注釋技術
使用內聯(lián)注釋來創(chuàng)建 SQL代碼段能夠繞過多種輸入防注入檢測,尤其是簡單的模式匹配防注入檢測。攻擊者可以在過濾了空白符的情況下使用內聯(lián)注釋來分隔每個關鍵字。如
'/**//**/UNION/**//**/SELECT/**//**/1,pass word,3/**//**/FROM /**//**/account/**/--
在較早的MySQL版本中,甚至可以在SQL關鍵字內部使用內聯(lián)注釋,而繞過防注入檢測。如
'/**//**/UN/**/I/**/ON/**//**/S/**/EL/**/E/* */CT/**//**/1,password,3/**//**/FR/**/O/**/M/**/ /**/users/**/--
3) 編碼技術
攻擊者可以通過編碼來避免惡意代碼中的關鍵字被黑名單匹配到,從而繞過防注入檢測。編碼技術有非常多種,如URL 編碼、UTF-8、十六進制編碼。其中,攻擊中最為常用的編碼技術為URL編碼。假設過濾器能夠阻止空白符和內聯(lián)注釋符/*,但無法阻止用了URL編碼的內聯(lián)注釋的SQL攻擊。在這種情況下,可以用以下語句來繞
過防注入檢測
'%2f%2a*/UNION%2f%2a*/SELECT%2f%2a */password%2f%2a*/FROM%2f%2a*/users%--
4) 動態(tài)查詢技術
由于許多數(shù)據(jù)庫都允許動態(tài)執(zhí)行SQL查詢,導致攻擊者可以使用動態(tài)查詢來繞過防注入檢測。不同的數(shù)據(jù)庫中動態(tài)查詢執(zhí)行的實現(xiàn)會有所不同。例如,不同數(shù)據(jù)庫使用不同的語法來拼接字符串。假設SQL關鍵字SELECT被過濾了,可以用以下方式構造它。
Oracle:'SEL' || 'ECT'
SQL Server:'SEL' + 'ECT'
MySQL:'SEL''ECT'
也可以使用CHAR函數(shù)(Oracle中為CHR函數(shù))來構造SELECT
CHAR(83)+CHAR(69)+CHAR(76)+CHAR(6 9)+CHAR(67)+CHAR(84)
近年來,國內外對SQL注入的研究取得了不少成果。在一定程度上防止了SQL注入攻擊。這些成果大致分為以下幾類。
1) 用戶輸入過濾
用戶輸入過濾方法通過對用戶提交的數(shù)據(jù)采用關鍵字匹配,基于正則表達式的規(guī)則匹配等方法進行過濾。用戶輸入過濾能夠有效防御已知的SQL注入攻擊,但無法對未知的SQL注入攻擊進行有效的防御。傳統(tǒng)的用戶輸入過濾方案有關鍵字過濾和基于正則表達式的特征規(guī)則過濾。
Ivan Ristc 開發(fā)的開源項目ModSecurity[6]和Roesch M 開發(fā)的入侵檢測軟件Snort[7],這2個項目都是通過制定攻擊的特征規(guī)則集過濾用戶輸入,從而防御SQL注入攻擊。
關鍵字過濾通過過濾SELECT、OR、AND等關鍵字防御SQL注入,但是對SQL注入的攔截率有限和較高的誤報率?;谡齽t表達式的特征規(guī)則過濾相對于關鍵字過濾有效地提高了率,降低了誤報率,能夠有效防御SQL注入。
2) 基于機器學習的SQL注入檢測
基于機器學習的 SQL注入檢測技術利用機器學習算法學習所有可能的SQL注入攻擊,但是該方法的效果十分依賴于機器學習算法的精確度和學習樣本的準確度。Kim等[8]提出了一種基于數(shù)據(jù)挖掘和機器學習的SQL注入攻擊檢測方法。該方法提取了數(shù)據(jù)庫日志中內部查詢樹的特征向量,之后通過SVM算法對這些特征向量進行分類,從而達到防御SQL注入攻擊的目的。
3) 語法結構比較
語法結構比較的方法能夠高效地防御 SQL注入攻擊,但是它的覆蓋率很難達到 100%,并且這種方法可能需要修改源碼。石聰聰?shù)萚9]提出了一種基于SQL語法樹特征匹配的方法,該方法在后臺中維持一個由正常 SQL語句提取的特征知識庫。當Web應用程序生成動態(tài)SQL語句時和后臺的知識庫進行匹配。若匹配成功,則為合法SQL語句;若匹配不成功,根據(jù)基于風險值的動態(tài)特征過濾算法來進行識別。通過分析可知,該方法在知識庫中的語法樹特征數(shù)量較大時,會存在使匹配效率降低的問題。
4) 參數(shù)化查詢和存儲化過程[10,11]
參數(shù)化查詢是在代碼層對 SQL注入攻擊進行防御[12]?,F(xiàn)今的大部分編程語言都能通過參數(shù)化查詢語句訪問數(shù)據(jù)庫。參數(shù)化查詢語句讓數(shù)據(jù)庫訪問API可以使用占位符或綁定變量來向SQL查詢提供參數(shù)。使用參數(shù)化查詢能夠避免或解決很多應用中常見SQL注入問題。
正確地配置存儲過程的訪問權限能夠有效地防止或減輕SQL注入攻擊產(chǎn)生的影響,提高系統(tǒng)的安全性[13]。并且大部分數(shù)據(jù)庫現(xiàn)在都能夠支持存儲過程,允許通過存儲過程對數(shù)據(jù)庫進行訪問。
5) 敏感信息加密
對數(shù)據(jù)庫中的賬號密碼、客戶信息、交易信息等敏感數(shù)據(jù)進行加密,能夠盡量地降低受到SQL注入攻擊后的危害。楊玉龍等[14]提出了一種新的防止SQL注入的方案,結合同態(tài)加密技術,對用戶的輸入進行同態(tài)加密,使攻擊者輸入的特殊字符或拼接的SQL語句失去其本身的意義,該方案的使用有效地防止了SQL注入攻擊。
6) 網(wǎng)絡測量
SQL注入在請求長度、連接數(shù)以及特征串等方面相較于正常用戶請求的流量有較大區(qū)別。據(jù)此,趙宇飛等[15]首次從網(wǎng)絡流量分析的角度檢測 SQL
注入行為,提出了LFF(length-frequency- feature)檢測方法,通過連接頻率檢測、長度檢測和特征串檢測,能夠較準確地發(fā)現(xiàn)網(wǎng)絡中的SQL攻擊行為。
4.1 概述
對于正常的用戶輸入數(shù)據(jù),根據(jù)數(shù)字型和字符型,將用戶輸入的數(shù)據(jù)代入SQL語句“select a from b where c=?”(其中?為占位符)。其生成的SQL語句的特征都是相同的,如該SQL語法樹的節(jié)點總數(shù)是一樣的。以用戶輸入admin為例,其SQL語法樹的結構如圖1所示。
圖1 正常的SQL語法樹
而對于SQL注入攻擊輸入,將攻擊輸入數(shù)據(jù)代入相同的 SQL語句中將會報錯或改變原有的SQL語句的語法結構,如增加某個節(jié)點、語法樹結構變化等。以用戶輸入admin’ or ‘1’=’1為例,其SQL語法樹的結構如圖2所示。
圖2 注入攻擊的SQL語法樹
因此,如果某個輸入數(shù)據(jù)帶入SQL語句“select a from b where c=?”(?為占位符)后,該SQL語句的語法結構特征(SQL語法樹節(jié)點總數(shù))與預期的不符,則說明該用戶輸入可能為SQL注入攻擊。
基于上述分析,本文結合了用戶輸入過濾措施和SQL語法樹結構比較措施的特點,提出了一種基于SQL語法樹的SQL注入過濾方法。該方法的設計思路為:將SQL注入過濾分為轉碼階段和SQL語法樹比較階段這2個部分。其中,轉碼階段檢測用戶輸入的數(shù)據(jù),將用戶輸入中字符的大小寫、編碼、注釋符進行轉換,以防止攻擊者繞過檢測。SQL語法樹比較階段通過將用戶輸入數(shù)據(jù)分別以數(shù)字型和字符型帶入“select a from b where c=?”(?為占位符)中,分別對兩條生成后的SQL語句進行語法解析生成語法樹。若2棵SQL語法樹的特征(SQL語法的節(jié)點總數(shù))跟期望中的特征一樣,則該用戶輸入是合法的。若兩棵SQL語法樹其中一顆SQL語法樹的特征與期望中的不一致,則判斷該用戶輸入為SQL注入攻擊。
4.2 SQL注入攻擊檢測過程
本文提出的基于SQL語法樹的SQL注入過濾方法的詳細流程如圖3所示。
該方法的具體工作過程描述如下。
1) 首先,將用戶輸入中字符的大小寫、編碼、注釋符進行轉換。消除SQL語句前后的空白,將其中的連續(xù)空白字符(包括空格、TAB和回車換行)替換成單個空格。之后將SQL語句全變成小寫形式(或大寫形式),并轉化各種編碼,以此防止攻擊者繞過檢測。
2) 在不知道用戶輸入的該參數(shù)是字符型還是數(shù)字型的情況下。先假設用戶輸入的該參數(shù)為字符型,用輸入的數(shù)據(jù)X代入SQL語句“select a from b where c=?”(?為占位符),得到SQL語句“select a from b where c=X”。
3) 對SQL語句“select a from b where c=X”進行SQL解析得到SQL語法樹。若解析失敗,則直接結束,并將該輸入判定為SQL注入;若解析成功繼續(xù)步驟4)。
4) 將步驟3)生成的SQL語法樹的特征(SQL語法的節(jié)點總數(shù))與期望中的特征進行匹配。若一樣,繼續(xù)步驟5);若不一樣直接結束,并將該輸入判定為SQL注入攻擊。
5) 判斷用戶輸入的數(shù)據(jù)中第一個空格前的數(shù)
據(jù)是不是數(shù)字。若是數(shù)字,繼續(xù)步驟6);若不是數(shù)字,直接結束,并將該輸入判定為正常輸入。
圖3 過濾流程
6) 假設用戶輸入的該參數(shù)為數(shù)字型,將用輸入的數(shù)據(jù)X代入SQL語句“select a from b where c=?”(?為占位符),得到SQL語句“select a from b where c=X”。
7) 對SQL語句“select a from b where c=X”進行SQL解析得到SQL語法樹。若解析失敗,則直接結束,并將該輸入判定為正常輸入;若解析成功,繼續(xù)步驟8)。
8) 將步驟7)生成的SQL語法樹的特征(SQL語法的節(jié)點總數(shù))與期望中的特征進行匹配。若一樣,則將該輸入判定為正常輸入;若不一樣,則將該輸入判定為SQL注入攻擊。
4.3 模塊介紹
本文所提方法的設計模塊如圖4所示。
圖4 系統(tǒng)模塊
1) 數(shù)據(jù)提取模塊:負責提取用戶輸入的數(shù)據(jù)。
2) 轉碼模塊:負責將用戶輸入數(shù)據(jù)中字符的大小寫、編碼、注釋符進行轉換。
3) 判斷模塊:負責將解析的 SQL語法樹的特征值(節(jié)點總數(shù))與期望的特征進行比對,根據(jù)結果判斷用戶輸入的能不能構成 SQL注入攻擊。在與SQL解析模塊進行第一交互后,根據(jù)用戶輸入數(shù)據(jù)中的第一個空格前的數(shù)據(jù)是不是數(shù)字,判斷是否與SQL解析模塊進行第二次交互。
4) SQL解析模塊:負責將SQL語句解析為SQL語法樹,包括詞法分析和語法分析。詞法分析負責根據(jù)SQL的詞法,對SQL語句進行分解,生成一個個獨立的單詞。語法分析負責在詞法分析的基礎上,根據(jù)SQL語法來判斷該SQL語法是否符合語法邏輯,并構造出SQL語法樹。
5) 日志:負責接收其他模塊的錯誤信息,并記錄日志。
6) 配置文件:負責接收管理員的指令,控制是基于SQL語法樹過濾模塊的開關,即是否對用戶輸入進行過濾。
本文采用的測試案例(Web應用程序)為小型的J2EE招聘系統(tǒng),該系統(tǒng)包含登錄、查看簡歷等功能,且代碼中存在SQL注入漏洞。服務器為Tomcat,后臺數(shù)據(jù)庫為MySQL。測試數(shù)據(jù)為SQL注入攻擊輸入100條(由SQLMAP生成),正常輸入200條。其中,200條的正常輸入中100條包含關鍵字的正常輸入。為了便于測試該方法對攻擊的攔截率和誤報率,本文對基于SQL語法樹的過濾方法、基于關鍵字過濾的方法和基于正則表達式的過濾方法(含30條過濾規(guī)則)進行了比較。測試結果如圖5、圖6和表1所示。
圖5 SQL注入攔截率
圖6 用戶輸入誤報率
表1 SQL注入攔截率和誤報率
圖5和圖6表明本文提出的基于SQL語法樹的過濾方法對SQL注入攻擊有較好的防御效果和較低的誤報率。該方法相比基于關鍵字過濾的方法和基
于正則表達式的過濾方法能夠有效地提高攔截率。
為了測試基于 SQL語法樹的過濾方法對Web應用程序性能的影響,本文分別對Web應用程序未加載過濾模塊和Web應用程序加載過濾模塊這2種情況分別進行測試,測試結果如圖7~圖9和表2所示。
圖7 正常輸入測試時間
圖9 SQL注入攻擊測試時間
表2 系統(tǒng)響應時間
圖7表明,對于不含攻擊關鍵字的正常訪問,加載了過濾模塊的Web應用程序相對于未加載過濾模塊的Web應用程序響應時間有略微的延遲,但是基本沒有受到影響。圖8表明,對含有攻擊關鍵字的正常訪問而言,過濾模塊對開頭為數(shù)字的輸入數(shù)據(jù)的響應時間相對較慢,對開頭為非數(shù)字的輸入數(shù)據(jù)響應時間較快,致使加載了過濾模塊的Web應用程序響應時間較慢。圖9表明,對于SQL注入攻擊而言,未加載過濾模塊時,SQL注入可能改變了后臺數(shù)據(jù)庫運行的SQL語句,從而導致響應時間有了明顯增加;加載了過濾模塊之后,由于過濾模塊中對復雜的SQL語句的解析時間較長,所以響應時間增加。因此,對于SQL注入攻擊,未加載過濾模塊和加載了過濾模塊的系統(tǒng)響應時間都有所延遲,導致兩者的系統(tǒng)響應時間較為接近。加載了過濾模塊的Web應用程序相對未加載過濾模塊的Web應用程序的響應延遲在可接受的范圍內,對用戶體驗的影響不大。
SQL注入攻擊是 Web應用面臨的一個巨大安全挑戰(zhàn)。本文針對SQL注入攻擊,結合了用戶輸入過濾措施和SQL語法樹結構比較措施,提出了一種基于SQL語法樹的過濾方法。實驗分析表明,該方法相較傳統(tǒng)的基于關鍵字過濾的方法和基于正則表達式的過濾方法能夠有效地提高攔截率并降低誤報率。
[1] 鄭成興. 網(wǎng)絡入侵防范的理論與實踐[M]. 北京: 機械工業(yè)出版社, 2006. ZHENG C X. Network intrusion prevention theory and practice[M]. Beijing: China Machine Press,2006.
[2] 高鵬, 嚴望佳. 構建安全的 Web站點[M]. 北京: 清華大學出版社, 1999. GAO P, YAN W J. Build a secure Web site[M]. Beijing:Tsinghua University Press,1999.
[3] ANLEY, Chris. Advanced SQL injection in SQL server applica-
tions[R]. An NGSSoftware Insight Security Research (NISR) Publication, 2002.
[4] CLARKE J. SQL Injection Attacks and Defense[M]. Amsterdam: Elsevier, 2009.
[5] 李鑫, 張維緯, 隋子暢, 等. 新型SQL注入及其防御技術研究與分析[J]. 信息網(wǎng)絡安全,2016,2:66-73. LI X, ZHANG W W, SUI Z C, et al. Research and analysis on the novel SQL injection and defense technique[J]. Netinfo Security, 2016,2:66-73.
[6] BECHER M. Web application firewalls[D]. Akademikerverlag: Universiti Teknologi MARA, 2012.
[7] ROESCH M. Snort: lightweight intrusion detection for networks[C]//The 13th Conference on Systems Administration (LISA-99), Usenix Association. 1999:229-238.
[8] MI-YEON K, DONG H L. Data-mining based SQL injection attack detection using internal query trees[J]. Expert Systems with Applications, 2014(41): 5416-5430.
[9] 石聰聰, 張濤, 余勇, 等. 一種新的SQL注入防護方法的研究與實現(xiàn)[J]. 計算機科學, 2012,(S1):60-64. SHI C C, ZHANG T, YU Y,LIN W M. New approach for SQL-injection detection[J].Computer Science,2012,(S1):60-64.
[10] 成曉利. Web 應用程序SQL 注入攻擊漏洞測試系統(tǒng)的研究與實現(xiàn)[D]. 成都: 西南交通大學,2013. CHENG X L. Research and implementation of Web application SQL injection vulnerability detection system[D]. Chengdu: Southwest Jiaotong University, 2013.
[11] 褚龍現(xiàn). ASP.NET 應用中SQL注入攻擊的分析與防范[J]. 計算機與現(xiàn)代化, 2014,(3):151-153,160. CHU L X. Analysis and defense of SQL injection attacks in ASP.NET application[J].Computer and Modernization, 2014,(3): 151-153,160.
[12] WEI K, MUTHUPRASANNA M, KOTHARI S. Preventing SQL injection attacks in stored procedures[C]//IEEE Conference on Piscataway, Software Engineering. 2006: 191-198.
[13] 黃龍軍. 存儲過程技術在網(wǎng)絡考試系統(tǒng)SQL 注入攻擊防御上的應用[J]. 計算機系統(tǒng)應用, 2013,22(1):103-106. HUANG L J. Application of stored procedures to defense against SQL injection attacks in online examination system[J].Computer Systems & Applications,2013,22(1):103-106.
[14] 楊玉龍, 彭長根, 周洲. 基于同態(tài)加密的防止 SQL注入攻擊解決方案[J].信息網(wǎng)絡安全, 2014,(1):30-33. YANG Y L,PENG C G,ZHOU Z.A solution of preventing SQL injection attacks based on homomorphic encryption[J]. Netinfo Security, 2014,(1):30-33.
[15] 趙宇飛, 熊剛, 賀龍濤, 等. 面向網(wǎng)絡環(huán)境的SQL注入行為檢測方法[J]. 通信學報, 2016,02:88-97. ZHAO Y F, XIONG G, HE L T, et al. Approach to detecting SQL injection behaviors in network environment[J]. Journal on Communications, 2016,02:88-97.
韓宸望(1993-),男,福建漳州人,福建師范大學碩士生,主要研究方向為信息安全。
林暉(1977-),男,福建福州人,博士,福建師范大學副教授、碩士生導師,主要研究方向為物聯(lián)網(wǎng)、云計算、信任管理、無線通信網(wǎng)絡、網(wǎng)絡與信息安全。
黃川(1979-),男,福建福州人,博士,福建師范大學講師,主要研究方向為計算機網(wǎng)絡技術、無線網(wǎng)絡技術。
Research on the SQL injection filtering based on SQL syntax tree
HAN Chen-wang1,2, LIN Hui1,2, HUANG Chuan1,2
(1. School of Mathematics and Computer Science, Fujian Normal University, Fuzhou 350117, China;
2. Fujian Provincial Key Laboratory of Network Security and Cryptology, Fujian Normal University, Fuzhou 350117, China)
The development of Web application make its areas become more and more widely. Followed by a security problem is becoming more and more serious, especially for the SQL injection attacks, which bring a huge challenge to the Web application security. A new SQL injection filtering method was proposed to detect SQL injection attack by introducing a security strategy based on SQL syntax tree to the design of the user input filtering. The experimental results show that the method can effectively prevent SQL injection attacks, and has higher recognition rate and lower rate of false positives.
SQL injection attack, Web security, SQL syntax tree, user input filtering
TP309
A
10.11959/j.issn.2096-109x.2016.00113
2016-08-17;
2016-10-14。通信作者:林暉,linhui@fjnu.edu.cn
國家自然科學基金資助項目(No.61363068, No.61472083);福建省引導基金資助項目(No.2016Y0031);福州市科技局基金資助項目(No.2015-G-54, No.2015-G-84)
Foundation Items: The National Natural Science Foundation of China (No.61363068, No.61472083), Pilot Project of Fujian Province (No.2016Y0031), Project of Fuzhou Municipal Science and Technology Bureau (No.2015-G-54, No.2015-G-84)