精品人妻无码一区二区三区软件 ,麻豆亚洲AV成人无码久久精品,成人欧美一区二区三区视频,免费av毛片不卡无码

您現(xiàn)在的位置是:首頁信息安全論文

基于SQL注入的Web應(yīng)用程序安全性研究

發(fā)布時間:2014-02-19 11:18:37更新時間:2014-02-19 11:19:58 1

  隨著互聯(lián)網(wǎng)的普及應(yīng)用,Web應(yīng)用系統(tǒng)廣泛應(yīng)用到各個領(lǐng)域。但由于Web應(yīng)用系統(tǒng)的功能豐富、便于傳播、通用性強(qiáng)等特點(diǎn),導(dǎo)致它容易為網(wǎng)絡(luò)黑客所攻擊。1998年第一次有人發(fā)現(xiàn)SQL注入,此后研究人員開始注意SQL注入的危險性,而且之后SQL注入進(jìn)行攻擊的事件愈演愈烈。

  【摘要】SQL注入是對Web應(yīng)用程序造成威脅非常流行的一種攻擊方法,本文從SQL注入的原理技術(shù)進(jìn)行分析,介紹如何從多個角度防止SQL注入,更好的維護(hù)Web應(yīng)用程序的安全。

  【關(guān)鍵詞】SQL注入,安全,研究

  1引言

  近幾年發(fā)生幾起SQL注入比較有名的事件,2009年12月,黑客利用SQL注入漏洞攻擊RockYou數(shù)據(jù)庫獲取用戶密碼信息;2010年9月,瑞典選民在選舉階段內(nèi)通過SQL注入攻擊選舉;2011年,黑客利用SQL注入漏洞從諾基亞網(wǎng)站盜取用戶信息;2012年,MMORPG游戲網(wǎng)站被黑客SQL注入攻擊。越來越多利用SQL注入攻擊非法獲取經(jīng)濟(jì)利益,任何網(wǎng)站或應(yīng)用中的一個SQL注入漏洞都很有可能受到黑客的攻擊。

  2SQL注入技術(shù)分析

  SQL是訪問數(shù)據(jù)庫服務(wù)器的標(biāo)準(zhǔn)語言,幾乎所有的Web應(yīng)用都需要與數(shù)據(jù)庫打交道,勢必用到SQL語言。SQL的典型操作“查詢”可以獲取數(shù)據(jù)庫的“查詢結(jié)果記錄集”,并且SQL語句可以對數(shù)據(jù)庫的結(jié)構(gòu)或數(shù)據(jù)進(jìn)行操作和修改,如果攻擊者利用SQL語句進(jìn)入Web應(yīng)用程序的數(shù)據(jù)查詢,SQL注入攻擊就有可能發(fā)生。

  當(dāng)Web應(yīng)用程序的開發(fā)人員對cookie或用戶輸入的參數(shù)等數(shù)據(jù)不進(jìn)行過濾或驗證就直接傳遞值給SQL查詢語句時,SQL注入漏洞就開始存在了。

 。1)SQL注入漏洞原因

  一條典型的SQL語句:

  statement:="SELECT*FROMusersWHEREname='"+uName+"';"

  這段代碼的目的是將某個特定用戶從用戶表中取出,但如果用戶名被惡意用戶用特定方式偽造,這條語句的執(zhí)行操作就完全違反了作者的期望。比如,將用戶名這個變量(uName)輸入為:

  u'or'a'='a'

  這樣寫的目的是,name='uName'的要求就變成了name='u'?or?'a'='a',單引號剛好閉合,此時原始語句變?yōu)椋?/p>

  SELECT*FROMusersWHEREname='u'or'a'='a';

  此代碼被用于認(rèn)證過程的話,如上輸入能夠強(qiáng)迫選擇合法的用戶名,因為賦值'a'='a'永遠(yuǎn)為真。

  如此的SQL注入除了可以獲取正確的用戶通過外,還可以利用這一點(diǎn)刪除表、或者獲取表中所有的數(shù)據(jù)等。

 。2)SQL注入的危害

  攻擊者可以利用SQL注入任意增、刪、改或查數(shù)據(jù)庫中的數(shù)據(jù),獲取數(shù)據(jù)庫中存放的個人密碼、消費(fèi)記錄等敏感信息;可以通過這種方法獲得管理員的權(quán)限操作數(shù)據(jù)庫;如果攻擊者利用SQI注入執(zhí)行一些系統(tǒng)的命令的話,他們可以獲得整個系統(tǒng)的控制權(quán),后果可想而知。

  3SQL注入的安全防范

  (1)參數(shù)化方法

基于SQL注入的Web應(yīng)用程序安全性研究

  參數(shù)化方法是指在數(shù)據(jù)提交的地方不直接進(jìn)行賦值,而利用參數(shù)來進(jìn)行值傳遞。使用參數(shù)化方法,在DBMS對SQL語句完成編譯后,才載入?yún)?shù)運(yùn)行語句。即便參數(shù)的傳遞中含有指令,也不會被運(yùn)行。

  使用參數(shù)化查詢技術(shù),數(shù)據(jù)庫服務(wù)器不會將參數(shù)的內(nèi)容視為SQL指令的一個組成部分來處理,在數(shù)據(jù)庫系統(tǒng)完成對SQL指令的編譯后,再載入?yún)?shù)運(yùn)行.因此,即使參數(shù)中含有指令,也不會被DBMS編譯運(yùn)行。示例1:

  ……

  sql.CommandText="select*fromuserswhereuname=?andpword=?";

  //構(gòu)造SQL語句,根據(jù)的用戶名和密碼在用戶表中查找記錄

  sql.Parameters.Append(cmd.CreateParameter("@uname",200,1,20,"abc"));

  sql.Parameters.Append(cmd.CreateParameter("@pword",200,1,16,"bcd"));

  ……

  rs.Close();

  conn.Close();

  如上例子中以“?”代表即將輸入的內(nèi)容。在具體的查詢執(zhí)行過程中,這個含有待輸入內(nèi)容的SQL語句會被應(yīng)用程序提交給DBMS,由DBMS執(zhí)行查詢計劃,應(yīng)用程序隨后以參數(shù)的方式傳遞這些輸入值,DBMS把參數(shù)輸入的值應(yīng)用到查詢計劃中,并執(zhí)行得到查詢結(jié)果。即便攻擊者改變參數(shù)的值再次執(zhí)行語句,會得到不同的查詢結(jié)果,參數(shù)輸入的值的變化不能影響到查詢計劃。這就如同我們做的填空題:“查找密碼是(_)并且用戶名是(_)的用戶。”無論誰填也無論括號內(nèi)填什么,都不能改變語句本身的意思。(2)驗證輸入

  SQL注入主要是開發(fā)人員對輸入的參數(shù)等數(shù)據(jù)不進(jìn)行過濾或驗證造成的。那么可以通過限制表單或者查詢字符串輸入的長度來進(jìn)行防范。若用戶名的長度最長為12個字符,那么表單輸入時可限制輸入12個字符以上的內(nèi)容,這樣一定程度上限制了攻擊者的攻擊行為。

  對用戶輸入的內(nèi)容的合法性進(jìn)行驗證,確保輸入的內(nèi)容僅包含合法數(shù)據(jù),驗證除了在客戶端進(jìn)行之外再服務(wù)器端也可以再次進(jìn)行驗證,這樣可以彌補(bǔ)客戶端驗證脆弱的安全性。在客戶端,攻擊者有可能會通過非法方式獲取網(wǎng)頁源代碼,對合法性驗證的腳本進(jìn)行修改,然后將非法輸入通過修改后的表單提交到服務(wù)器端。因此,若要保證非法數(shù)據(jù)無法注入,最好的辦法就是客戶端和服務(wù)器都執(zhí)行驗證。

 。3)安全配置數(shù)據(jù)庫服務(wù)器

  對數(shù)據(jù)庫服務(wù)器的安全配置格外重要,即便網(wǎng)站不小心被SQL注入所攻擊,攻擊者想獲取服務(wù)器密碼也沒那么容易。

  一般的網(wǎng)站給予用戶連接DBMS的權(quán)限級別較高,這樣比較危險,可以根據(jù)實(shí)際需要分配不同級別賬號,給予的權(quán)限一定是其需要的最低權(quán)限就夠了,從連接源頭限制攻擊者的進(jìn)一步獲取數(shù)據(jù)的權(quán)限。

  當(dāng)攻擊者通過SQL注入獲取了數(shù)據(jù)庫連接文件的數(shù)據(jù)時,接下來有可能使用文件中的username和password來連接數(shù)據(jù)庫服務(wù)器,所以數(shù)據(jù)庫網(wǎng)絡(luò)連接的安全必須要設(shè)置恰當(dāng)。其中一種方法是對連接進(jìn)行限制,僅保留本地指定的IP地址有權(quán)訪問數(shù)據(jù)庫服務(wù)器,對其他任何IP地址一律拒絕;蛘邔⑦B接數(shù)據(jù)庫服務(wù)器的端口由默認(rèn)改為自定義,也可以從一定程度保證數(shù)據(jù)庫服務(wù)器的安全。

  4結(jié)束語

  SQL注入攻擊主要針對應(yīng)用程序開發(fā)過程中的編程漏洞,這種攻擊是可以繞過很多防火墻的,雖然DBMS版本一直不斷地更新,加上腳本語言本身漏洞的減少,但只要此漏洞存在,總是潛伏著很多隱患。因此,研究SQL注入攻擊的防范方法,在應(yīng)用程序等開發(fā)的過程中對用戶輸入信息的詳細(xì)過濾檢查,重視DBMS的安全配置等,對于Web應(yīng)用程序的安全有著非常重要的意義。

  參考文獻(xiàn)

  [1]鄭成興.網(wǎng)絡(luò)入侵防范的理論語實(shí)踐[M].北京:機(jī)械工業(yè)出版社,2006,9:1-20.

  [2]高洪濤.SQL注入攻擊途徑及策略分析[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2011:14-16.

  [3]石聰聰.一種新的SQL注入防護(hù)方法的研究與實(shí)現(xiàn)[J].計算機(jī)科學(xué),2012(6):60-64.

  [4]李曉龍.基于SQL注入攻擊的三種防御技術(shù)[J].湖北文理學(xué)院學(xué)報,2013(5):18-21.

  [5]趙陽.基于SQL注入的數(shù)據(jù)安全測評技術(shù)研究[D].沈陽工業(yè)大學(xué),2012:33-35.

  [6]徐寅昊.SQL注入及SQLServer的安全性研究[D].上海:華東師范大學(xué),2009:44-45.

  [7]王偉平.基于正則表達(dá)式的SQL注入過濾模塊設(shè)計[J].計算機(jī)工程,2011,37(5):158-160.

相關(guān)期刊推薦:《數(shù)字化用戶》

  《數(shù)字化用戶》創(chuàng)刊于1992年,經(jīng)國家新聞出版總署批準(zhǔn),四川科學(xué)技術(shù)學(xué)會主管、四川電腦推廣協(xié)會,電腦商情報社主辦。國內(nèi)刊號CN51-1567/TN國際刊號ISSN1009-0843郵發(fā)代號62-99。本刊一直以來以其學(xué)術(shù)性、專業(yè)性、權(quán)威性、實(shí)用性,承擔(dān)著為政府機(jī)構(gòu)、企事業(yè)單位、各大院校以及科研機(jī)構(gòu)的數(shù)字化管理、研發(fā)、技術(shù)人員提供展示科研成果、進(jìn)行學(xué)術(shù)交流的重要職責(zé)。

  《數(shù)字化用戶》辦刊宗旨

  本刊堅持科學(xué)發(fā)展觀,響應(yīng)我國數(shù)字化信息時代的方針、政策和發(fā)展戰(zhàn)略;探討數(shù)字化建設(shè)的規(guī)劃、方案和成果;交流數(shù)字化技術(shù)和應(yīng)用的實(shí)例和經(jīng)驗;推廣數(shù)字新技術(shù)、科技新理念,推動數(shù)字技術(shù)發(fā)展。

  《數(shù)字化用戶》主要欄目

  數(shù)字產(chǎn)業(yè)、信息工程、科技前沿、網(wǎng)絡(luò)通信、數(shù)字化教學(xué)、電子商務(wù)、物聯(lián)網(wǎng)、智能系統(tǒng)、理論探索、軟件開發(fā)應(yīng)用、數(shù)字化醫(yī)療、綜合論壇、電子科技等。

  《數(shù)字化用戶》期刊數(shù)據(jù)庫收錄情況/影響因子

  萬方數(shù)據(jù)-數(shù)字化期刊群全文收錄期刊、《中國核心期刊(遴選)數(shù)據(jù)庫》收錄期刊、中文科技期刊數(shù)據(jù)庫全文收錄期刊、龍源國際期刊網(wǎng)全文收錄期刊、中國期刊網(wǎng)全文收錄期刊。


轉(zhuǎn)載請注明來自:http://www.jinnzone.com/xinxianqlw/31374.html