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

?

防范SQL注入的應(yīng)用分析

2012-03-30 15:59任長(zhǎng)普
電子設(shè)計(jì)工程 2012年16期
關(guān)鍵詞:字符串攻擊者端口

任長(zhǎng)普

(克拉瑪依市委黨校電大 新疆 克拉瑪依 834000)

目前至少有70%以上的Web站點(diǎn)存在著SQL注入的缺陷,惡意用戶便可以利用服務(wù)器、數(shù)據(jù)庫(kù)配置的疏漏和精心構(gòu)造的非法語(yǔ)句通過(guò)程序或腳本侵入服務(wù)器獲得網(wǎng)站管理員的權(quán)限和數(shù)據(jù)庫(kù)的相關(guān)內(nèi)容,嚴(yán)重的還可以獲得整個(gè)服務(wù)器所在內(nèi)網(wǎng)的系統(tǒng)信息,它們的存在不僅對(duì)數(shù)據(jù)庫(kù)信息造成威脅,甚至還可以威脅到系統(tǒng)和用戶本身。SQL注入攻擊是腳本攻擊的一種,文中將從分析SQL注入PHP網(wǎng)站開(kāi)始,介紹SQL注入的基本思路與方法,結(jié)合實(shí)例分析多種SQL注入方式,并整理總結(jié)了網(wǎng)站防范SQL注入的手段。

1 SQL注入的基本原理

網(wǎng)站安全技術(shù)除了以上所述外,另外最重要同時(shí)也應(yīng)用最廣泛的就是SQL注入技術(shù),也是文中所研究的重點(diǎn),將在下文作詳細(xì)地介紹和探討。

1.1 SQL注入攻擊的概念

所謂SQL注入式攻擊,也就是SQL Injection,就是攻擊者把SQL命令插入到Web表單的輸入域或頁(yè)面請(qǐng)求的查詢字符串,欺騙服務(wù)器執(zhí)行惡意的SQL命令。來(lái)自官方的說(shuō)法是:“當(dāng)應(yīng)用程序使用輸入內(nèi)容來(lái)構(gòu)造動(dòng)態(tài)SQL語(yǔ)句以訪問(wèn)數(shù)據(jù)庫(kù)時(shí),會(huì)發(fā)生SQL注入攻擊。如果代碼使用存儲(chǔ)過(guò)程,而這些存儲(chǔ)過(guò)程作為包含未篩選的用戶輸入的字符串來(lái)傳遞,也會(huì)發(fā)生SQL注入攻擊。SQL注入可能導(dǎo)致攻擊者能夠使用應(yīng)用程序登錄在數(shù)據(jù)庫(kù)中執(zhí)行命令。如果應(yīng)用程序使用特權(quán)過(guò)高的帳戶連接到數(shù)據(jù)庫(kù),這種問(wèn)題會(huì)變得很嚴(yán)重”。

在某些表單中,用戶輸入的內(nèi)容直接用來(lái)構(gòu)造(或者影響)動(dòng)態(tài)SQL命令,或作為存儲(chǔ)過(guò)程的輸入?yún)?shù),這類表單特別容易受到SQL注入式攻擊。而許多網(wǎng)站程序在編寫時(shí),沒(méi)有對(duì)用戶輸入數(shù)據(jù)的合法性進(jìn)行判斷或者程序中本身的變量處理不當(dāng),使應(yīng)用程序存在安全隱患。

這樣用戶就可以提交一段數(shù)據(jù)庫(kù)查詢代碼,(一般是在瀏覽器地址欄進(jìn)行,通過(guò)正常的www端口訪問(wèn))根據(jù)程序返回的結(jié)果,獲得一些敏感的信息或者控制整個(gè)服務(wù)器,于是SQL注入產(chǎn)生了。其實(shí)簡(jiǎn)單點(diǎn)說(shuō),SQL注入的原理就是從客戶端提交特殊的代碼,收集程序及服務(wù)器的信息,從而獲取你想到得到的資料[3-4]。

1.2 SQL注入常用函數(shù)

Access:asc(字符)SQLServer:unicode(字符);

作用:返回某字符的ASCII碼;

Access:chr(數(shù)字)SQLServer:nchar(數(shù)字);

作用:與asc相反,根據(jù)ASCII碼返回字符;

Access:mid(字符串,N,L)SQLServer:substring(字符串,N,L);

作用:返回字符串從N個(gè)字符起長(zhǎng)度為L(zhǎng)的子字符串,即N到N+L之間的字符串;

Access:abc(數(shù)字)SQLServer:abc(數(shù)字);

作用:返回?cái)?shù)字的絕對(duì)值(在猜解漢字的時(shí)候會(huì)用到);

Access:A between B And C SQLServer:A between B And C;

作用:判斷A是否界于B與C之間。

1.3 SQL Server與MySQL的掃描機(jī)制

SQL Server與MySQL都是Web應(yīng)用開(kāi)發(fā)的后端服務(wù)器,通過(guò)服務(wù)器來(lái)進(jìn)行系統(tǒng)文件與命令的操作是攻擊者最常用的手段,攻擊者多數(shù)是分析利用它們網(wǎng)絡(luò)通信機(jī)制來(lái)進(jìn)行版本信息探測(cè)和漏洞掃描,掃描到的數(shù)據(jù)可以清楚的協(xié)助攻擊者掌握后臺(tái)版本漏洞并做出相應(yīng)的注入攻擊策略。

1)SQL Server通信方式 命名管道通信,是借助SMB報(bào)文來(lái)進(jìn)行的,如果服務(wù)器端配置有加載命名管道網(wǎng)絡(luò)庫(kù),它就會(huì)使用TCPl39及445端口來(lái)完成與客戶端的通信??蛻舳巳绻渲昧嗣艿纴?lái)連接服務(wù)器,一般是與端口445端口建立SMB的會(huì)話連接。

TCP/IP協(xié)議通信,此種通信需要客戶端和服務(wù)器端都加載有TCP/IP網(wǎng)絡(luò)庫(kù),SQL Server會(huì)在TCPl433端口監(jiān)聽(tīng)客戶端的連接請(qǐng)求。

多協(xié)議通信,這是一種采用Windows RPC的通信機(jī)制。SQL Server會(huì)在初始化時(shí)向TCPl35端口上的Mapper服務(wù)動(dòng)態(tài)注冊(cè)監(jiān)聽(tīng)端口,而客戶端要連接SQLServer需向TCPl35端口的Mapper發(fā)送請(qǐng)求,在得到真正的端口后才能正常通信。

2)MySQL通信方式 TCP/IP協(xié)議通信,MySQL缺省監(jiān)聽(tīng)的TCP端口是3306,服務(wù)器會(huì)通過(guò)這個(gè)端口與客戶端進(jìn)行數(shù)據(jù)通信。熟悉各自數(shù)據(jù)庫(kù)服務(wù)器的通信方式會(huì)對(duì)網(wǎng)絡(luò)掃描有一定的針對(duì)性和目的性。

1.4 Web網(wǎng)站數(shù)據(jù)提交及傳值方式

Web表單數(shù)據(jù)提交方式有兩種,一種是GET,一種是PoST。GET提交數(shù)據(jù)是利用URL傳值,提交的數(shù)據(jù)顯示在網(wǎng)頁(yè)地址URL中,一般可以看到,且網(wǎng)頁(yè)地址欄可以讓客戶端用戶隨意輸入。GET提交方式受到限制,最多只能提交1 024字節(jié)的數(shù)據(jù),而POST提交不受到限制。POST提交的數(shù)據(jù)從URL地址欄上是無(wú)法看到的。

問(wèn)號(hào)后面就是屬于URL傳值。有時(shí)候會(huì)有多個(gè)參數(shù),這些值用戶可以看到,也可以更改,就算網(wǎng)站不允許用戶與網(wǎng)站進(jìn)行交互,用戶也可以隨意修改URL地址。如果你允許用戶與網(wǎng)站交互,那么用戶還可以通過(guò)表單提交數(shù)據(jù)到服務(wù)器。用戶可以隨意在URL地址中或是表單書寫作何東西,就容易被別有用心的人加以利用,在入侵網(wǎng)站的手段中,SQL注入成了大多攻擊者嘗試入侵的方法。SQL注入,是指利于SQL語(yǔ)法特性,從客戶端提交特殊的代碼,從而收集程序及服務(wù)器的信息,從而獲取你想到得到的資料。

GET能提交1 024字節(jié)的數(shù)據(jù)也足夠應(yīng)付攻擊者的要求。SQL注入是基于應(yīng)用層的,這種攻擊方式是攻擊者通過(guò)猜測(cè)一些公共表來(lái)進(jìn)行攻擊的,這種攻擊方式得以實(shí)施的前提是因?yàn)楣粽呤斐绦蛟O(shè)計(jì)人員的編程習(xí)慣和程序設(shè)計(jì)的特點(diǎn)。普通用戶會(huì)認(rèn)為非公開(kāi)下載的源程序,攻擊者是很難得到真實(shí)數(shù)據(jù)庫(kù)結(jié)構(gòu),但事實(shí)上數(shù)據(jù)庫(kù)中有用戶表與系統(tǒng)表,一般程序員會(huì)對(duì)系統(tǒng)表名為sysobjects,系統(tǒng)表存在的每一個(gè)對(duì)象,包括約束、默認(rèn)值、日志等等,攻擊者可以在查詢分析器時(shí)執(zhí)行相對(duì)應(yīng)的SQL語(yǔ)句就可以依次得到數(shù)據(jù)庫(kù)的用戶表,從而得到數(shù)據(jù)庫(kù)表中的字段。

2 SQL注入的防范措施

2.1 服務(wù)器端的安全措拖

服務(wù)器的安全措施雖然不能有效阻止SQL的注入,但可以將降低SQL注入的威脅,防范某些機(jī)密數(shù)據(jù)的泄露,如果服務(wù)器的安全系數(shù)不夠,黑客可能就直接滲透服務(wù)器,不必在網(wǎng)頁(yè)上大費(fèi)周折。有些小型網(wǎng)站是采用ASP+ACCESS或是PHP+ACCESS創(chuàng)建的,如果ACCESS存在的文件夾允許訪問(wèn),而數(shù)據(jù)后綴為mdb,則網(wǎng)站瀏覽者可以直接下載該數(shù)據(jù)庫(kù)。服務(wù)器的安全措施適用于擁有獨(dú)立服務(wù)器的網(wǎng)站。

1)Apache服務(wù)器安全 修改掉默認(rèn)的用戶名,修改用戶名權(quán)限,只有管理員才擁有最高權(quán)限,關(guān)才所有的不需要的端口。及時(shí)的對(duì)服務(wù)器進(jìn)行更新,安裝最近補(bǔ)丁,提高服務(wù)器安全。把一般性需要保護(hù)的文件放在安全目錄下,禁止非法用戶的訪問(wèn)。

2)IIS服務(wù)器安全 屏蔽錯(cuò)誤信息是在服務(wù)處理完畢后進(jìn)行補(bǔ)救。攻擊其實(shí)已經(jīng)發(fā)生,只是企圖阻擊攻擊者知道攻擊結(jié)果。一些攻擊者使用新技術(shù),在錯(cuò)誤信息被屏蔽的情況下仍能獲得錯(cuò)誤信息。按需求限制網(wǎng)站或文件夾的權(quán)限,包括腳本資源訪問(wèn)、讀取、寫入、目錄瀏覽、記錄訪問(wèn)、索引資源等等。如果網(wǎng)站不需要與用戶進(jìn)行交互,那可以去掉寫入權(quán)限。如果網(wǎng)站只限內(nèi)部人員使用,可以去掉匿名訪問(wèn)權(quán)限,選擇集成Windows身份驗(yàn)證。刪掉不必要的腳本映射,刪除IIS的危險(xiǎn)組件。

3)Access數(shù)據(jù)庫(kù)安全 Access數(shù)據(jù)庫(kù)以獨(dú)立的文件存在于文件夾中,這與MySQL及MsSQL不同,Access應(yīng)在獨(dú)立的文件夾內(nèi),該文件夾內(nèi)不能包含有網(wǎng)站的當(dāng)前路徑,網(wǎng)站瀏覽無(wú)法在瀏覽器的地址欄內(nèi)輸入地址訪問(wèn)文件夾,access的擴(kuò)展名不要以mdb為后綴,可改為.a(chǎn)sp,或是.a(chǎn)sa。

4)MySQL數(shù)據(jù)庫(kù)安全 更改默認(rèn)的用戶名與密碼。限制用戶權(quán)限,根據(jù)不同的用戶分配查詢、插入、更新、刪除等操作權(quán)限,例如僅允許用戶具有查詢權(quán)限,則用SQL注入想要進(jìn)行插入、更新、刪除等操作時(shí)無(wú)法使用。

5)MsSQL數(shù)據(jù)庫(kù)安全 限制使用數(shù)據(jù)庫(kù)的權(quán)限,不要賦予使用數(shù)據(jù)庫(kù)用戶角色為服務(wù)器角色組,根據(jù)需要分配表的操作權(quán)限。

6)PHP安全 將 magic_quotes_gpc設(shè)置為 on,對(duì)輸入的特殊字符進(jìn)行轉(zhuǎn)義。將display_errorsy設(shè)置為on,禁止錯(cuò)誤信息提示,防止惡意用戶從錯(cuò)誤提示中得到提示。

2.2 客戶端的安全措施

SQL注入,大多都從客戶端滲透的。客戶端的SQL注入,屬于正常提交,服務(wù)器允許客戶端向服務(wù)器提交數(shù)據(jù),開(kāi)發(fā)人員對(duì)于來(lái)自客戶端的提交的數(shù)據(jù),要假設(shè)都是不可信任的,在服務(wù)器正式處理之前,對(duì)來(lái)自客戶端提交的數(shù)據(jù)進(jìn)行驗(yàn)證、過(guò)濾。

1)addslashes()函數(shù) PHP函數(shù),將對(duì)輸入的特殊字符進(jìn)行轉(zhuǎn)義,如果服務(wù)器magic_quotes_gpc設(shè)置為on,會(huì)自動(dòng)對(duì)輸入的特殊字符進(jìn)行轉(zhuǎn)義。

2)server.HTMLEncode()函數(shù) ASP 函數(shù),對(duì)指定的字符串應(yīng)用HTML編碼,(把字符編碼為轉(zhuǎn)義符),瀏覽器在解釋轉(zhuǎn)義符時(shí),只將轉(zhuǎn)義符對(duì)應(yīng)的字符或者字符串轉(zhuǎn)化顯示在瀏覽器上,而不進(jìn)行HTML的標(biāo)記解釋,類似PHP的addslashes()函數(shù),但沒(méi)有它強(qiáng)大,例如說(shuō)單引號(hào),server.HTMLEncode0函數(shù)就不會(huì)對(duì)它進(jìn)行轉(zhuǎn)義,而單引號(hào)在SQL注入的作用非常的大。

3)MD5()函數(shù) PHP中有自帶函數(shù),對(duì)指定的字符串進(jìn)行加密。ASP中需要自定義,網(wǎng)絡(luò)中很容易找到,自定義函數(shù)已有自己的好處,可以根據(jù)需要進(jìn)行某些更改,雖說(shuō)該函數(shù)加密不可逆,但網(wǎng)上很容易搜到破解工具,如果你做一些更改,網(wǎng)上的工具就無(wú)法破解了。

4)intval()函數(shù) PHP函數(shù),通過(guò)使用特定的進(jìn)制轉(zhuǎn)換(默認(rèn)是十進(jìn)制),返回變量腳的integer數(shù)值,如果查詢的是整形變量,利用此函數(shù)將用戶的輸入轉(zhuǎn)換成整形,該函數(shù)與settype(mixed var,‘int’)功能差不多。

5)isnumeric()、is_numeric()函數(shù) 分別為 ASP、PHP 函數(shù),判斷變量是否為數(shù)字。當(dāng)限制客戶端的輸入為數(shù)字時(shí),可以用來(lái)加以判斷。

6)len()函數(shù)與 strlen()函數(shù) 兩個(gè)函數(shù)分別為 ASP、PHP獲取長(zhǎng)度的函數(shù),用此函數(shù)限制用戶輸入數(shù)據(jù)的長(zhǎng)度。

7)正則配匹 正則匹配能將復(fù)雜的驗(yàn)證簡(jiǎn)化成較短的判斷語(yǔ)句,例如它可以驗(yàn)證輸入數(shù)據(jù)的長(zhǎng)度,是否為數(shù)字等,用一個(gè)表達(dá)式就可以完成,不必分開(kāi)驗(yàn)證,唯一的缺點(diǎn)是,相對(duì)函數(shù)來(lái)說(shuō),正則匹配驗(yàn)證時(shí)間會(huì)比一般函數(shù)要慢。

3 結(jié)束語(yǔ)

文中對(duì)SQL注入攻擊的方法、原理以及攻擊實(shí)施過(guò)程進(jìn)行了闡述和總結(jié),由于SQL注入攻擊是針對(duì)應(yīng)用開(kāi)發(fā)過(guò)程中的編程漏洞,因此對(duì)于絕大多數(shù)防火墻來(lái)說(shuō),這種攻擊是可以繞過(guò)的。雖然數(shù)據(jù)庫(kù)服務(wù)器的版本一直在更新,各種腳本語(yǔ)言本身的漏洞也越來(lái)越少,可是隨著SQL注入技術(shù)的不斷提高,只要Web應(yīng)用系統(tǒng)或源碼中仍然存在此類漏洞,就會(huì)潛伏著這種隱患。本文總結(jié)整理出多種SQL注入方式,并結(jié)合實(shí)例提出多種有效的防范SQL注入的方法,且穩(wěn)定安全地運(yùn)用于實(shí)際網(wǎng)站當(dāng)中,為WEB網(wǎng)站保駕護(hù)航。

[1]胡昌振.網(wǎng)絡(luò)入侵檢測(cè)原理與技術(shù)[M].北京:北京理工大學(xué)出版社,2006.

[2]鄧吉,曹軼,羅詩(shī)堯.黑客攻防實(shí)戰(zhàn)入門[M].北京:電子工業(yè)出版社,2007.

[3]張勇,李力,薛倩.Web環(huán)境下SQL注入攻擊的檢測(cè)與防御[J].現(xiàn)代電子技術(shù),2004,27(15):103-105.ZHANG Yong,LI li,XUE Qian.Detection and prevention of SQL injection attacksin Web environment[J].Modern electronic technology,2004,27(15):103-105.

[4]王云,郭外萍,陳承歡.Web項(xiàng)目中的SQL注入問(wèn)題研究與防范方法[J].計(jì)算機(jī)工程與設(shè)計(jì),2010,31(5):976-978.WANG Yun,GUO Wai-ping,CHEN Cheng-huan.SQL injection in the Web project research and prevention methods[J].Computer Engineering and Design,2010,31(5):976-978.

[5]劉文晉.遠(yuǎn)程滲透測(cè)試中的SQL注入攻擊技術(shù)研究[D].北京:北京交通大學(xué),2009.

[6]徐茹枝.針對(duì)SQL攻擊的數(shù)據(jù)庫(kù)防護(hù)系統(tǒng)的設(shè)計(jì)與研究[D].上海:華北電力大學(xué),2010.

[7]張駿溫.多功能SQL注入檢測(cè)系統(tǒng)的實(shí)現(xiàn)及攻擊防范方法研究[D].北京:北京交通大學(xué),2009.

[8]徐寅昊.SQL注入及SQL Server的安全性研究 [D].華東師范大學(xué),2009.

[9]張卓.SQL注入攻擊技術(shù)及防范措施研究[D].上海:上海交通大學(xué),2007.

[10]張超.SQL Server數(shù)據(jù)庫(kù)入侵檢測(cè)系統(tǒng)的研究[D].西安電子科技大學(xué),2004.

[11]張博.SQL注入攻擊與檢測(cè)技術(shù)研究[J].信息安全與通信保密,2010(5):90-92.ZHANG Bo.SQL Injection Attack and Detection Technology[J].Information Security and Communications Privacy,2010(5):90-92.

[12]王菊.淺談?dòng)?jì)算機(jī)網(wǎng)絡(luò)安全[J].硅谷,2010(5):49.WANG Ju.Talk about computer network security[J].Silicon Valley,2010(5):49.

[13]王曉平.惡意代碼的入侵檢測(cè)技術(shù)研究[J].哈爾濱職業(yè)技術(shù)學(xué)院報(bào),2010(3):124-125.WANG Xiao-ping.Research on the instruction detect system technology of the malicious code[J].Journal of Harbin Vocational&Technical College,2010(3):124-125.

[14]謝棟梁.淺談SQL注入攻擊與防范[J].中國(guó)西部科技,2010(2):20-21.XIE Dong-liang.Talk about the SQL injection attacks and prevention[J].Science and Technology of West China,2010(2):20-21.

[15]王希忠,王智,黃俊強(qiáng).淺談數(shù)據(jù)庫(kù)注入攻擊及其應(yīng)對(duì)策略[J].信息技術(shù),2010(2):120-124.WANG Xi-zhong,WANG Zhi,HUANG Jun-qiang.Database injection attacks and strategy for coping with it[J].Information Technology,2010(2):120-124.

猜你喜歡
字符串攻擊者端口
機(jī)動(dòng)能力受限的目標(biāo)-攻擊-防御定性微分對(duì)策
一種端口故障的解決方案
基于文本挖掘的語(yǔ)詞典研究
正面迎接批判
端口阻塞與優(yōu)先級(jí)
有限次重復(fù)博弈下的網(wǎng)絡(luò)攻擊行為研究
8端口IO-Link參考設(shè)計(jì)套件加快開(kāi)發(fā)速度
衛(wèi)星三端口DC-DC變換器技術(shù)綜述
一種新的基于對(duì)稱性的字符串相似性處理算法
高效的top-k相似字符串查詢算法