• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      WEB系統(tǒng)中SQL注入防御方法的研究

      2015-03-31 16:05:00焦玉華
      大眾科技 2015年4期
      關(guān)鍵詞:工商學(xué)院攻擊者語句

      焦玉華

      (山東工商學(xué)院,山東 煙臺(tái) 264005)

      WEB系統(tǒng)中SQL注入防御方法的研究

      焦玉華

      (山東工商學(xué)院,山東 煙臺(tái) 264005)

      SQL注入風(fēng)險(xiǎn)已成為WEB應(yīng)用最大的安全隱患之一,通過介紹SQL注入的本質(zhì)及特點(diǎn),詳細(xì)分析了SQL注入的一般思路和實(shí)現(xiàn)方法,最后從服務(wù)器IIS設(shè)置、數(shù)據(jù)庫設(shè)置和程序編寫三個(gè)方面提出了針對(duì)SQL注入的防御措施。

      網(wǎng)絡(luò)安全;SQL注入攻擊;SQL注入點(diǎn)

      1 引言

      隨著WEB技術(shù)的迅速發(fā)展,基于B/S結(jié)構(gòu)的WEB應(yīng)用得到了廣泛的普及,涉及到教育、金融、社交等多個(gè)領(lǐng)域,這使得其安全問題備受關(guān)注。在OWASP(開放式web應(yīng)用程序安全項(xiàng)目)研究公布的WEB應(yīng)用程序最可能、最常見、最危險(xiǎn)的十大安全隱患中,SQL注入風(fēng)險(xiǎn)位居前列,并因其普遍程度高,危害程度大,成為目前主要的WEB應(yīng)用攻擊方法之一。本文以ASP+SqlServer為例,介紹SQL注入的過程和防御方法。

      2 SQL注入概述

      2.1SQL注入的本質(zhì)

      SQL注入攻擊就其本質(zhì)而言,就是攻擊者利用SQL語法的特點(diǎn),針對(duì)應(yīng)用程序開發(fā)者編程過程中沒有對(duì)用戶的輸入數(shù)據(jù)進(jìn)行合法性驗(yàn)證的漏洞,向應(yīng)用程序中插入一些SQL語句來實(shí)現(xiàn)對(duì)數(shù)據(jù)庫未經(jīng)授權(quán)的訪問和檢索,根據(jù)WEB頁面返回的結(jié)果,獲得自己想要的數(shù)據(jù)。

      2.2SQL注入的特點(diǎn)

      (1)攻擊的廣泛性。由于SQL注入是利用的SQL語法,因此在理論上講,只要支持SQL語言標(biāo)準(zhǔn)的數(shù)據(jù)庫軟件都有可能受到SQL注入的攻擊,例如MS Sql Server、Mysql、Oracle、DB2等。

      (2)技術(shù)門檻低。SQL注入的原理相對(duì)簡(jiǎn)單,易于掌握和實(shí)施。只要有SQL語法基礎(chǔ)的人都可以進(jìn)行SQL注入攻擊,同時(shí)還有很多專門的SQL注入工具,例如SQLMAP、HDSI,這樣即使完全不懂編程、不懂 SQL語法的人的都可以進(jìn)行SQL注入攻擊。

      (3)隱蔽性強(qiáng)。SQL注入攻擊是通過正常的WWW端口訪問數(shù)據(jù)庫,語法結(jié)構(gòu)也是正確的SQL語句,與正常的頁面訪問完全一樣,因此這種攻擊可以順利地越過防火墻而不被發(fā)現(xiàn)。

      3 SQL注入的實(shí)現(xiàn)

      SQL注入的一般思路是首先判斷 WEB應(yīng)用是否存在SQL注入漏洞,即尋找注入點(diǎn),判斷后臺(tái)數(shù)據(jù)庫類型,再確定XP_CMDSHELL可執(zhí)行情況,進(jìn)一步發(fā)現(xiàn)WEB虛擬目錄,最后上傳ASP木馬,得到管理員權(quán)限。

      3.1查找SQL注入點(diǎn)

      HTTP協(xié)議的請(qǐng)求方法中,常用到GET和POST兩種。GET方法是把參數(shù)數(shù)據(jù)隊(duì)列加到提交表單的ACTION屬性所指的URL中,從服務(wù)器上獲取數(shù)據(jù)。POST方法將表單內(nèi)各個(gè)字段與其內(nèi)容放置在 HTML HEADER內(nèi)一起傳送到ACTION屬性所指的URL地址,是向服務(wù)器傳送數(shù)據(jù)。SQL注入點(diǎn)最可能出現(xiàn)的地方就是使用GET和POST方法與服務(wù)器交換數(shù)據(jù)的地方。常用的手工查找SQL注入點(diǎn)的方法有以下兩種:“加單引號(hào)”法 和“1=1、1=2”法。

      3.2利用SQL注入點(diǎn)進(jìn)行注入攻擊

      下面以用戶登錄驗(yàn)證模塊為例,說明SQL注入攻擊的實(shí)施過程。在登錄驗(yàn)證的程序中,通常用的SQL語句為:select * from usertable where username=‘a(chǎn)dmin’and password=’123’。如果攻擊者以“admin’or 1=1 --”作為用戶名輸入時(shí),SQL語句變?yōu)椋簊elect * from usertable where username=‘a(chǎn)dmin’or 1=1 -- and password=’123’,“--”在SQL語法中是注釋符,其后面的語句都會(huì)被注釋掉,不會(huì)被執(zhí)行,而“or 1=1”恒為真,這使得 where條件判斷也恒為真,攻擊者就可以跳過用戶驗(yàn)證順利進(jìn)入系統(tǒng)。

      4 SQL注入的防御方法

      針對(duì)SQL注入攻擊的本質(zhì)和實(shí)現(xiàn)方法,從服務(wù)器IIS設(shè)置、數(shù)據(jù)庫設(shè)置和程序編寫三個(gè)方面分析如何防御SQL注入。

      4.1服務(wù)器IIS設(shè)置

      程序員在編寫或調(diào)試程序時(shí),IIS會(huì)把詳細(xì)的代碼錯(cuò)誤信息反映在WEB頁面中,讓程序員能夠迅速的發(fā)現(xiàn)程序的問題所在,而攻擊者恰恰也可以利用這個(gè)錯(cuò)誤信息發(fā)現(xiàn)系統(tǒng)的漏洞。因此在WEB系統(tǒng)發(fā)布后,在IIS的配置調(diào)試選項(xiàng)卡中,選擇“向客戶端發(fā)送下列文本錯(cuò)誤信息(T)”選項(xiàng),定義一個(gè)統(tǒng)一固定的錯(cuò)誤提示,替代詳細(xì)的錯(cuò)誤提示,這樣可以在一定程度上減少注入試探。

      4.2數(shù)據(jù)庫設(shè)置

      猜測(cè)表名、字段名也是SQL注入的一種方法,因此在數(shù)據(jù)庫的命名上要做到標(biāo)準(zhǔn)規(guī)范,避免用 admin、username、password等常見詞作為表名或字段名。WEB應(yīng)用連接數(shù)據(jù)庫時(shí),要遵循“最小權(quán)限準(zhǔn)則”,堅(jiān)決不能用sa權(quán)限的用戶連接數(shù)據(jù)庫,對(duì)表的select、update、delete操作權(quán)限要做精確的設(shè)置。

      4.3程序編寫

      程序員編寫程序時(shí)不規(guī)范、不嚴(yán)謹(jǐn),是 WEB應(yīng)用存在SQL注入點(diǎn)的主要原因,應(yīng)該從以下四個(gè)方面去規(guī)范程序編寫,減少系統(tǒng)漏洞。

      4.3.1對(duì)用戶的輸入進(jìn)行合法性驗(yàn)證

      (1)限定用戶輸入的字符串長(zhǎng)度。這個(gè)方法簡(jiǎn)單易操作,可以有效地防止攻擊者構(gòu)造較長(zhǎng)SQL語句插入到WEB應(yīng)用中??梢酝ㄓ迷O(shè)置文本字段的 maxlength屬性來實(shí)現(xiàn),也可以通過函數(shù)len()進(jìn)行判斷。

      (2)屏蔽或替換特殊的符號(hào)。在SQL注入中,單引號(hào)、括號(hào)、注釋符號(hào)、空格、雙引號(hào)等都是常用的特殊符號(hào),可以根據(jù)實(shí)際情況將這些特殊符號(hào)屏蔽掉,也可以用replace()替換成全角或中文符號(hào),使惡意的SQL語句無法插入到系統(tǒng)中。

      (3)對(duì)系統(tǒng)的輸入要求做專門驗(yàn)證。

      在WEB應(yīng)用的輸入設(shè)計(jì)中,對(duì)有些輸入的內(nèi)容要求比較具體,例如只允許輸入數(shù)字、字母、漢字或者它們的組合等,可以利用或者構(gòu)造相應(yīng)的函數(shù)去驗(yàn)證,我們以只允許輸入數(shù)字為例:通過IsNumeric()或者ASC()判斷ASCII碼值來確定輸入是否為數(shù)字,也可以利用正則表達(dá)式“^[0-9]+$”來判斷。

      4.3.2使用參數(shù)化查詢

      部分程序員在編寫程序時(shí),為了省時(shí)省力,以字符串拼接的方式構(gòu)建SQL語句,導(dǎo)致系統(tǒng)中存在SQL注入隱患,而參數(shù)化查詢是目前最有效的預(yù)防SQL注入攻擊的方法。參數(shù)化查詢是指程序鏈接并訪問數(shù)據(jù)庫時(shí),在需要填入數(shù)據(jù)的地方,使用參數(shù)來賦值。在使用參數(shù)化查詢的情況下,數(shù)據(jù)庫不會(huì)將參數(shù)的內(nèi)容當(dāng)做SQL指令的一部份來執(zhí)行,而是先進(jìn)行SQL 指令的編譯,再套用參數(shù)執(zhí)行,這樣即使參數(shù)中含有惡意的指令,也不會(huì)被數(shù)據(jù)庫執(zhí)行。同樣以登錄驗(yàn)證為例,使用參數(shù)化查詢來實(shí)現(xiàn):

      dim rs,cmd,cn

      set cmd=server.CreateObject("adodb.command")

      set cn=server.CreateObject("adodb.connection")

      set rs=server.CreateObject("adodb.recordset")

      cn.Open"DRIVER={SQL Server};SERVER=服務(wù)器;UID=用戶名;PWD=密碼;

      DATABASE=數(shù)據(jù)庫"

      cmd.activeconnection=cn

      cmd.commandtext="select*fromusertablewhere username=? and password=?"

      cmd.commandtype=1

      cmd.prepared=true

      cmd.parameters.append

      cmd.createparameter("username",adVarChar,

      adparaminput,10)

      cmd.parameters.append

      cmd.createparameter("password",adVarChar,

      adparaminput,10)

      cmd.parameters("username")=request.form("username")

      cmd.parameters("password")=request.form("password")

      rs=cmd.execute

      在程序編寫中,除了上述方法,還可以對(duì)數(shù)據(jù)庫的重要數(shù)據(jù)進(jìn)行MD5加密,記錄跟蹤攻擊者的IP和攻擊行為,利用專門的掃描工具查找系統(tǒng)的注入漏洞。

      5 結(jié)語

      SQL注入攻擊是攻擊者廣泛使用的一種攻擊手段,嚴(yán)重威脅著應(yīng)用程序的安全。因此,WEB應(yīng)用的開發(fā)人員和維護(hù)人員必須要掌握SQL注入攻擊的常用方法和防御措施,在程序開發(fā)時(shí)要合理設(shè)計(jì),規(guī)范編程,盡量完善代碼避免漏洞,這樣才能保護(hù)系統(tǒng)的安全,遠(yuǎn)離SQL注入攻擊的危害。

      [1] 王云,郭外萍,陳承歡.Web項(xiàng)目中的SQL注入問題研究與防范方法[J].計(jì)算機(jī)工程與設(shè)計(jì),2010,(5):976-978.

      [2] 陳遜.SQL注入攻擊原理與防范[J].電腦知識(shí)與技術(shù),2008,(3):12.

      [3] 黃明輝.基于SQL Server的SQL注入攻擊防范方法[J].計(jì)算機(jī)安全,2008,(8):122-124.

      The study of WEB SQL injection defense system method

      SQL injection risk has become one of the biggest security risks WEB application, the nature and characteristics through the introduction of SQL injection, a detailed analysis of the general ideas and methods SQL injection, and finally write IIS settings from the server, database settings and procedures for the three areas the defense against SQL injection.

      Network security; SQL injection attacks; SQL injection point

      TP393.08

      A

      1008-1151(2015)04-0003-02

      2015-03-13

      山東工商學(xué)院青年科研基金項(xiàng)目(2012QN203)。

      焦玉華(1979-),男,河南衛(wèi)輝人,山東工商學(xué)院工程師,研究方向?yàn)榻虒W(xué)管理。

      猜你喜歡
      工商學(xué)院攻擊者語句
      四川工商學(xué)院簡(jiǎn)介
      四川工商學(xué)院簡(jiǎn)介
      基于微分博弈的追逃問題最優(yōu)策略設(shè)計(jì)
      四川工商學(xué)院簡(jiǎn)介
      四川工商學(xué)院簡(jiǎn)介
      重點(diǎn):語句銜接
      正面迎接批判
      愛你(2018年16期)2018-06-21 03:28:44
      精彩語句
      有限次重復(fù)博弈下的網(wǎng)絡(luò)攻擊行為研究
      如何搞定語句銜接題
      凌云县| 黎川县| 桓仁| 四川省| 汶川县| 突泉县| 桓仁| 杂多县| 镇赉县| 平安县| 新巴尔虎右旗| 靖边县| 手机| 斗六市| 灯塔市| 钟祥市| 资兴市| 清丰县| 绍兴县| 长沙县| 湖州市| 哈尔滨市| 定南县| 确山县| 宝清县| 嘉鱼县| 克山县| 辽宁省| 聊城市| 页游| 元朗区| 甘泉县| 大邑县| 丰原市| 万源市| 漳浦县| 绥芬河市| 廉江市| 五峰| 石渠县| 方正县|