国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

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

2011-08-15 00:44新疆孫俊德
職業(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ù)的合法性檢測(cè)不嚴(yán)或不檢測(cè)的特點(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)行注入攻擊測(cè)試。

如何判斷一個(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過濾。

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

以上僅是對(duì)SQL攻擊的粗略分類。但從技術(shù)上講,如今的SQL注入攻擊者們?cè)谌绾握页鲇新┒吹木W(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ù)的長(zhǎng)度、類型、語句、企業(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)行測(cè)試并打補(bǔ)丁,雖然SQL注入漏洞被發(fā)現(xiàn)和利用的機(jī)率并不太高。但近來攻擊者們?cè)絹碓蕉嗟匕l(fā)現(xiàn)并惡意地利用這些漏洞。因此,在部署其軟件之前,開發(fā)人員應(yīng)當(dāng)更加主動(dòng)地測(cè)試其代碼,并在新的漏洞出現(xiàn)后立即對(duì)代碼打補(bǔ)丁,做為網(wǎng)站管理人員要在Web應(yīng)用程序開發(fā)過程的所有階段實(shí)施代碼的安全檢查。首先,要在部署Web應(yīng)用之前實(shí)施安全測(cè)試,這種措施的意義比以前更大、更深遠(yuǎn)。網(wǎng)站管理人員還應(yīng)當(dāng)在部署之后用漏洞掃描工具和站點(diǎn)監(jiān)視工具對(duì)網(wǎng)站進(jìn)行測(cè)試。

[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ǔ)齊三漏洞
我喜歡
作文語句實(shí)錄
三明市| 安徽省| 敦煌市| 安庆市| 额尔古纳市| 永济市| 龙川县| 漠河县| 海丰县| 长兴县| 萨嘎县| 扬州市| 富源县| 察哈| 盘锦市| 东阳市| 遂溪县| 拉萨市| 甘南县| 全椒县| 鱼台县| 光山县| 华安县| 瓦房店市| 连城县| 卓资县| 雅江县| 卫辉市| 内丘县| 德保县| 和林格尔县| 乌什县| 新乡县| 板桥市| 鹤壁市| 拉萨市| 当涂县| 安阳市| 会理县| 化州市| 开封县|