• 
    

    
    

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

      ?

      SQL注入攻擊與防范技術(shù)

      2011-08-15 00:44:25新疆孫俊德
      職業(yè)技術(shù) 2011年8期
      關(guān)鍵詞:黑客漏洞語句

      新疆 孫俊德

      SQL注入攻擊與防范技術(shù)

      新疆 孫俊德

      通過對(duì)目前常見的SQL注入攻擊的行為分析,網(wǎng)站管理人員從中了解并采用相關(guān)的防范技術(shù),保障網(wǎng)站數(shù)據(jù)庫的安全。本文通過對(duì)SQL注入攻擊過程的分析,有針對(duì)性提出如何增強(qiáng)網(wǎng)站抗SQL注入攻擊的措施。

      SQL注入;黑客;網(wǎng)站安全

      引言

      SQL注入攻擊可以算是互聯(lián)網(wǎng)上最為流傳最為廣泛的攻擊方式,許多企業(yè)網(wǎng)站先后遭此攻擊。所謂SQL注入(SQL Injection),就是利用程序員對(duì)用戶輸入數(shù)據(jù)的合法性檢測不嚴(yán)或不檢測的特點(diǎn),故意從客戶端提交特殊的代碼,從而收集程序及服務(wù)器的信息,查詢數(shù)據(jù)庫。

      1 主要的攻擊方法實(shí)現(xiàn)的介紹

      (1)一些網(wǎng)站的管理登陸頁面對(duì)輸入的用戶名和密碼沒有做SQL過濾,導(dǎo)致網(wǎng)站被攻擊。

      這里假設(shè)一個(gè)沒有嚴(yán)格過濾SQL字符的管理登陸界面。事實(shí)上黑客并不需要知道用戶名和密碼,那么黑客只需在用戶名里面輸入"'or 1=1--",密碼任意輸入,提交后,系統(tǒng)認(rèn)為用戶名為空('')或者(1=1恒成立),后面不執(zhí)行(--),就無需驗(yàn)證密碼直接進(jìn)入后臺(tái)。

      (2)下面的查詢語句在有注入漏洞的服務(wù)器上被惡意利用也會(huì)導(dǎo)致嚴(yán)重后果。

      String SqlStr=”Select*from customers where CompanyName like'%"+textBox1.Text+"%"';

      這樣的字符串連接可能會(huì)帶來災(zāi)難性的結(jié)果,比如用戶在文本框中輸入:

      a'or1=1

      那么SqlStr的內(nèi)容就是:

      select*from customers where CompanyName like'%a'or1=1--%'

      這樣,整個(gè)customers數(shù)據(jù)表的所有數(shù)據(jù)就會(huì)被全部檢索出來,因?yàn)?=1永遠(yuǎn)true,而且最后的百分號(hào)和單引號(hào)被短橫杠注釋掉了。

      如果用戶在文本框中輸入:

      a'EXEC sP_addlogin'John','123'EXEC sP_addsrvrolemember'John','sysadmin'--

      那么SqlStr的內(nèi)容就是:

      select*from customers where CompanyName like'%a'EXEC sp_addlogin'John','123'

      EXECsp_addsrvrolemember'John','sysadmin'--

      該語句是在后臺(tái)數(shù)據(jù)庫中增加一個(gè)用戶John,密碼123,而且是一個(gè)sysadmin賬號(hào),相當(dāng)于sa的權(quán)限。

      如果用戶這時(shí)在文本框中輸入:a'EXECxp_cmdShell('formatc:/y')--運(yùn)行之后就開始格式化C盤!

      (3)通過注入獲得管理員賬戶密碼。

      一個(gè)正常的網(wǎng)址http://localhost/lawjia/show.asp?ID=101,將這個(gè)網(wǎng)址提交到服務(wù)器后,服務(wù)器將進(jìn)行類似Select*from表名 where字段="&ID的查詢(ID即客戶端提交的參數(shù),本例是即101),再將查詢結(jié)果返回給客戶端。

      當(dāng)某人知道網(wǎng)站管理員帳號(hào)存儲(chǔ)在表login中,其用戶名為admin,如果想知道管理員密碼,此時(shí)他可從客戶端接著提交這樣一個(gè)網(wǎng)址:

      http://localhost/lol/show.asp?ID=101 and(Select password from login where user_name='admin')>0

      返回的出錯(cuò)信息如下:

      MicrosoftOLEDBProvider forODBCDrivers(0x80040E07)

      [Microsoft][ODBC SQL Server Driver][SQL Server] 將 varchar 值 '!@huway**a'轉(zhuǎn)換為數(shù)據(jù)類型為int的列時(shí)發(fā)生語法錯(cuò)誤。

      /lol/show.asp,第 27 行

      黑體字部分即為返回密碼

      (4)通過工具進(jìn)行注入攻擊測試。

      如何判斷一個(gè)網(wǎng)站能否被注入,首先找到注入點(diǎn),像上面提到的“/show.asp?ID=101”就是一個(gè)注人點(diǎn),很多新聞系統(tǒng)的新聞顯示頁面、產(chǎn)品發(fā)布顯示頁面都有類似ID=101的標(biāo)志,在ID=101后面直接輸入and 1=1,如果沒有出錯(cuò),仍然返回原先顯示頁面,這就是一個(gè)注人漏洞,如果返回您的網(wǎng)址不合法,顯然己經(jīng)做了SQL過濾。

      顯然人工猜測表名是一件麻煩事情,但大多存放管理員的賬戶的表通常為addmin,guan,login這樣簡單單詞,通過黑客工具附帶字典,先確定表的名稱,接著猜測字段,然后窮學(xué)查詢字段第一位、第二、第三位…,直到全部出來,借助工具,對(duì)有注人漏洞網(wǎng)站攻擊成功率可達(dá)60%以上。注入工具有NBSI、啊 D、Domain 等。

      以上僅是對(duì)SQL攻擊的粗略分類。但從技術(shù)上講,如今的SQL注入攻擊者們在如何找出有漏洞的網(wǎng)站方面更加聰明,也更加全面了。出現(xiàn)了一些新型的SQL攻擊手段。黑客們可以使用各種工具來加速漏洞的利用過程。

      2 防御和檢查SQL注入的手段

      2.1 使用參數(shù)化的過濾性語句

      要防御SQL注入,用戶的輸入就絕對(duì)不能直接被嵌入到SQL語句中。恰恰相反,用戶的輸入必須進(jìn)行過濾,或者使用參數(shù)化的語句。參數(shù)化的語句使用參數(shù)而不是將用戶輸入嵌入到語句中。在多數(shù)情況中,SQL語句就得以修正。然后,用戶輸入就被限于一個(gè)參數(shù)。下面是一個(gè)使用Java和JDBCAPI例子:

      PreparedStatement prep=conn.prepareStatement("SELECT*FROM USERS WHEREPASSWORD=?");

      prep.setString(1,pwd);

      總體上講,有兩種方法可以保證應(yīng)用程序不易受到SQL注入的攻擊,一是使用代碼復(fù)查,二是強(qiáng)迫使用參數(shù)化語句的。強(qiáng)迫使用參數(shù)化的語句意味著嵌入用戶輸入的SQL語句在運(yùn)行時(shí)將被拒絕。不過,目前支持這種特性的并不多。如H2數(shù)據(jù)庫引擎就支持。

      2.2 還要避免使用解釋程序,因?yàn)檫@正是黑客們借以執(zhí)行非法命令的手段。

      2.3 防范SQL注入,還要避免出現(xiàn)一些詳細(xì)的錯(cuò)誤消息,因?yàn)楹诳蛡兛梢岳眠@些消息。要使用一種標(biāo)準(zhǔn)的輸入確認(rèn)機(jī)制來驗(yàn)證所有的輸入數(shù)據(jù)的長度、類型、語句、企業(yè)規(guī)則等。

      2.4 使用專業(yè)的漏洞掃描工具。但防御SQL注入攻擊也是不夠的。攻擊者們目前正在自動(dòng)搜索攻擊目標(biāo)并實(shí)施攻擊。其技術(shù)甚至可以輕易地被應(yīng)用于其它的Web架構(gòu)中的漏洞。企業(yè)應(yīng)當(dāng)投資于一些專業(yè)的漏洞掃描工具,如大名鼎鼎的Acunetix的Web漏洞掃描程序等。一個(gè)完善的漏洞掃描程序不同于網(wǎng)絡(luò)掃描程序,它專門查找網(wǎng)站上的SQL注入式漏洞。最新的漏洞掃描程序可以查找最新發(fā)現(xiàn)的漏洞。

      3 結(jié)束語

      建議Web應(yīng)用程序的程序員們對(duì)其代碼進(jìn)行測試并打補(bǔ)丁,雖然SQL注入漏洞被發(fā)現(xiàn)和利用的機(jī)率并不太高。但近來攻擊者們越來越多地發(fā)現(xiàn)并惡意地利用這些漏洞。因此,在部署其軟件之前,開發(fā)人員應(yīng)當(dāng)更加主動(dòng)地測試其代碼,并在新的漏洞出現(xiàn)后立即對(duì)代碼打補(bǔ)丁,做為網(wǎng)站管理人員要在Web應(yīng)用程序開發(fā)過程的所有階段實(shí)施代碼的安全檢查。首先,要在部署Web應(yīng)用之前實(shí)施安全測試,這種措施的意義比以前更大、更深遠(yuǎn)。網(wǎng)站管理人員還應(yīng)當(dāng)在部署之后用漏洞掃描工具和站點(diǎn)監(jiān)視工具對(duì)網(wǎng)站進(jìn)行測試。

      [1]馬宜義.網(wǎng)絡(luò)安全與病毒防范.上海:上海交通大學(xué)院出版社,2009.

      [2]秦志興,張鳳荔.計(jì)算機(jī)病毒原理與防范[M].北京:人民郵電出版社,2007.

      [3]張仁斌,李剛,等.計(jì)算機(jī)病毒與反病毒技術(shù)[M].武漢:武漢大學(xué)出版社,2006.

      (編輯 呂智飛)

      (作者單位:昌吉職業(yè)技術(shù)學(xué)院)

      猜你喜歡
      黑客漏洞語句
      漏洞
      歡樂英雄
      多少個(gè)屁能把布克崩起來?
      重點(diǎn):語句銜接
      網(wǎng)絡(luò)黑客比核武器更可怕
      精彩語句
      三明:“兩票制”堵住加價(jià)漏洞
      漏洞在哪兒
      高鐵急救應(yīng)補(bǔ)齊三漏洞
      如何搞定語句銜接題
      卫辉市| 四平市| 恩施市| 禹州市| 宜宾县| 靖远县| 托克逊县| 河津市| 苍梧县| 伽师县| 团风县| 潮州市| 固安县| 垦利县| 浏阳市| 建水县| 兴义市| 会泽县| 内江市| 昌宁县| 香河县| 始兴县| 江安县| 富宁县| 绥滨县| 新化县| 淮阳县| 始兴县| 铜川市| 正镶白旗| 建瓯市| 余姚市| 江西省| 康马县| 大石桥市| 乡宁县| 临洮县| 德格县| 合肥市| 略阳县| 登封市|