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

?

基于HttpModule的防SQL注入策略

2017-11-17 05:04:34安靜鑫
關(guān)鍵詞:實例屏蔽網(wǎng)頁

◆張 勇 安靜鑫

(山東輕工職業(yè)學(xué)院信息中心 山東 255300)

基于HttpModule的防SQL注入策略

◆張 勇 安靜鑫

(山東輕工職業(yè)學(xué)院信息中心 山東 255300)

SQL注入是入侵Web服務(wù)器最常見的行為,本文提出了基于HttpModule的防注入策略,在HttpModule管道中攔截用戶請求,用正則表達式和XML配置信息,分析用戶請求的合法性,對非法請求采取中止請求、屏蔽IP等措施,從而防止SQL注入,這種方法具有靈活高效、簡便易用的特點。

SQL注入; HttpModule; 用戶請求過濾; IP屏蔽

0 引言

目前大多數(shù)企事業(yè)單位建設(shè)了本部門的 Web服務(wù)器,這些服務(wù)器多數(shù)使用Windows Server和asp.net、php等腳本語言架設(shè)網(wǎng)站,經(jīng)過多年的發(fā)展,網(wǎng)站的布局越來越合理、功能越來越完備,但是安全問題卻越來越突出,被攻擊事件層出不窮,有的數(shù)據(jù)被竊取導(dǎo)致嚴重后果,例如徐玉玉電信詐騙案;有的網(wǎng)頁被篡改,被鏈接到木馬、游戲和境外網(wǎng)頁上,造成惡劣影響。

因此網(wǎng)站管理員越發(fā)重視 Web服務(wù)器安全問題,為此采取了諸多防范措施,例如購買安全狗、殺毒軟件、加固 Web服務(wù)器、安裝Web防火墻、查找SQL注入漏洞等等,其中防范SQL注入攻擊對管理員的業(yè)務(wù)水平要求很高,防范難度很大,本文研究重點就是使用HttpModule實時檢測和防范SQL注入攻擊,以達到保護Web服務(wù)器的目的。

由于國內(nèi)多數(shù)企事業(yè)單位使用windows server和IIS搭建網(wǎng)站,因此本文的研究方法是針對windows server + IIS+ASP.NET環(huán)境的,但是設(shè)計思路同樣適合于linux下的apache和Tomcat環(huán)境。

本文使用的術(shù)語說明:

(1)Web網(wǎng)站:是指假設(shè)在Web服務(wù)器上,供用戶訪問的網(wǎng)頁集合。

(2)Web服務(wù)器:是指架設(shè)Web網(wǎng)站的服務(wù)器平臺,因此保護網(wǎng)站實際上就是保護服務(wù)器。

(3)用戶請求:是指用戶使用瀏覽器或其他軟件向Web網(wǎng)站發(fā)出的的http請求,主要分為get和post兩種,請求中包含了用戶IP、瀏覽器版本、提交的參數(shù)等信息。

1 防SQL注入攻擊措施

1.1 現(xiàn)有措施

目前,Web服務(wù)器防范SQL注入攻擊主要依靠IT公司推出的各種WAF(Web應(yīng)用防護系統(tǒng)),WAF可分為三類:

(1)硬件Web防火墻:部署簡單,可承受較高的吞吐量,但是價格昂貴,中小網(wǎng)站負擔(dān)不起。

(2)軟件Web防火墻:界面友好,功能比較全面,如掃描惡意木馬文件、防篡改等功能,價格低廉,但是占用服務(wù)器內(nèi)存較大,軟件兼容不夠好、不夠穩(wěn)定。

(3)云WAF:部署簡單,維護成本低,由于由云端負責(zé)防護規(guī)則的更新和維護,用戶的工作量極少,但是由于所有訪問數(shù)據(jù)都會先經(jīng)過云端,所以保密性差,不適用于多數(shù)企事業(yè)單位。

無論哪一類WAF目前都存在一些不足,主要表現(xiàn)在:

(1)配置功能不夠全面: IT公司提供的產(chǎn)品是通用的,而國內(nèi)數(shù)以萬計的網(wǎng)站安全要求各不相同,很多個性化要求無法滿足,假設(shè)用戶希望能自定義正則表達式分析get和post請求的內(nèi)容,這樣的要求目前沒有哪一款WAF能夠滿足。

(2)屏蔽IP的功能不足。雖然多數(shù)WAF提供了IP黑名單功能,但主要依靠管理員手動添加,防范作用不大,管理員更希望在網(wǎng)站運行時,能自動屏蔽非法IP,甚至能建立windows防火墻的規(guī)則屏蔽之。

鑒于上述WAF存在的不足,本文提出了基于HttpModule模塊的SQL防注入策略,它不但可以防御SQL注入,還可以阻止掃描網(wǎng)站,在一定程度上代替了WAF的作用,實踐證明本策略設(shè)計的軟件簡便靈活,過濾效果顯著。

1.2 本方法創(chuàng)新點

本策略創(chuàng)新點如下:

(1)使用XML文件自定義配置,簡單靈活。

(2)動態(tài)、實時屏蔽非法IP。

(3)使用正則表達式過濾非法請求。

2 用戶請求處理流程

正常情況下,用戶打開一個網(wǎng)頁或者點擊鏈接就是在向Web網(wǎng)站發(fā)送若干請求,用戶請求在IIS服務(wù)器的處理過程比較復(fù)雜,以下僅作簡要說明。

當(dāng)用戶通過瀏覽器發(fā)送http請求時,該請求會傳給Web服務(wù)器上的w3wp.exe進程,該進程構(gòu)造一個HttpRuntime類的實例,該實例通過調(diào)用ProcessRequest方法產(chǎn)生一個HttpContext實例,從編程者角度看這是一個最重要的實例,因為可以通過它獲得用戶請求。之后用戶請求將通過一個“HttpModule模塊管道”,之所以稱為管道是因為用戶請求將經(jīng)過一系列HttpModule模塊,每個模塊可以攔截用戶請求進行處理。

“模塊管道”的終點是 HttpHandler,用戶請求穿過HttpModule模塊管道后,最后到達HttpHandle模塊,HttpHandle返回用戶請求的網(wǎng)頁內(nèi)容,通過用戶瀏覽器解析顯示出來,如圖1所示。

圖1 模塊管道

通過以上描述,得到以下信息:

(1)可以編寫一個HttpModule模塊,作為“模塊管道”的一部分,它是用戶請求的必經(jīng)節(jié)點。

(2)在HttpModule模塊內(nèi),通過訪問HttpContext實例獲得用戶請求,然后分析是否存在注入。

3 設(shè)計思路

3.1 獲取用戶請求

使用 C#語言編寫一個 HttpModule模塊,模塊中必須含有Application_BeginRequest(Object source, EventArgs e)方法,參數(shù)source就是傳遞來的用戶請求,在方法中對它進行類型轉(zhuǎn)換,語句如下:

HttpRequest request=((HttpApplication)source).Context.Request,這樣就得到了HttpRequest類的實例request,request中包含了用戶請求的信息,根據(jù)request的RequestType屬性可知當(dāng)前請求屬于哪一種,本文重點分析get請求,post請求的分析方法類似。

3.2 判斷SQL注入攻擊

首先要明確SQL注入攻擊的特征是什么。根據(jù)經(jīng)驗,黑客主要通過get參數(shù)和post提交兩種方式進行SQL注入攻擊,以get參數(shù)方式攻擊為例,具體表現(xiàn)是在get參數(shù)中使用各類非法字符,精心構(gòu)造各種sql命令傳遞給Web服務(wù)器,根據(jù)返回的結(jié)果,獲得數(shù)據(jù)庫或服務(wù)器的敏感信息進而控制整個 Web服務(wù)器,這就是SQL注入的實質(zhì)。

由此可知,檢查request實例含有的get參數(shù),就可以判斷當(dāng)前request是否存在SQL攻擊,要檢查的符號包括:單引號、圓括號、方括號、尖括號、花括號、星號、分號等;要檢查的SQL關(guān)鍵詞包括:select、union、where、javascript、group、administrator、cmdshell、alert等,由于數(shù)量較多,這里不能一一列出,如果get參數(shù)中含有這些符號或關(guān)鍵詞,就可以認定當(dāng)前請求為SQL注入攻擊。

但是這樣的簡單檢查誤報率較高,有時候合法參數(shù)中也會含有select,上述檢查會將這個合法請求誤判為SQL攻擊,這時候可以使用正則表達式進一步判斷,例如:.*(select).*(from|where),它表示get參數(shù)中select和from或where同時存在,才判斷是SQL攻擊,這就大大降低了誤報率,只是在反應(yīng)時間上稍慢而已,用戶幾乎感覺不到。

3.3 判斷惡意掃描

除了SQL注入攻擊,入侵者還經(jīng)常使用掃描工具對網(wǎng)站進行高頻率掃描,網(wǎng)站會在數(shù)秒內(nèi)接收到來自某個IP的上千次的get請求,因此有必要過濾這些高頻掃描。算法設(shè)計如下所示:

(1)首先設(shè)定一個單位時間訪問上限,規(guī)定本網(wǎng)站每N秒最多允許接收某IP的M個get請求。

(2)在HttpModule模塊中定義一個靜態(tài)變量,用來記錄每個IP的訪問次數(shù),每收到一個get請求,就將其IP來訪次數(shù)加1。

(3)模塊中定義一個Timer計數(shù)器,每隔N秒檢查所有被記錄的IP的訪問次數(shù),若發(fā)現(xiàn)某個IP發(fā)送的請求數(shù)量高于限定值M,就認定此IP在掃描網(wǎng)站,應(yīng)該禁止此IP一段時間。

需要注意的是,防止高頻掃描可能會禁止蜘蛛爬蟲抓取網(wǎng)頁,影響網(wǎng)站收錄。

3.4 配置XML

為了防御變化多端的SQL注入,本策略使用XML實現(xiàn)靈活配置,XML中應(yīng)該至少含有以下信息。

(1)SQL注入可能出現(xiàn)的非法符號、SQL關(guān)鍵詞,例如單引號、分號、cmdshell、system32等;

(2)用來檢查 SQL注入的正則表達式集合,例如.*(select).*(from|where);

(3)異常日志文件路徑、SQL注入的來源IP記錄日志等;

(4)用于判斷惡意掃描的時間間隔和訪問次數(shù)上限,例如可以分別設(shè)為60秒和500次;

(5)被檢查的請求對象,例如asp、php網(wǎng)頁;

(6)IP白名單和URL白名單,是指那些不需要檢測和過濾的IP和URL集合;

(7)IP的禁止時間長度,可以設(shè)為幾分鐘甚至幾個小時,最終應(yīng)該解禁。

3.5 屏蔽非法IP

屏蔽IP,主要采用兩種方式:

(1)禁止http訪問本網(wǎng)站:檢查每個請求的來源IP,若來自被屏蔽的IP,直接終止請求即可。

(2)禁止訪問本服務(wù)器:通過執(zhí)行netsh.exe命令,在windows防火墻上添加規(guī)則,例如:netsh advfirewall firewall add rule name="IP1" dir=in action=block remoteIP=24.105.9.201,此命令將徹底禁止24.105.9.201訪問Web服務(wù)器。

3.6 安裝部署和過濾效果

(1)軟件安裝

將上述算法編寫的dll文件和XML配置文件一同放置在網(wǎng)站bin目錄下,然后在Web.config中添加如下節(jié)點即可。

當(dāng)?shù)谝粋€用戶請求到來時,會從XML文件中讀取信息賦值給一組靜態(tài)變量,以后每當(dāng)用戶請求到來,不再讀取XML文件,直接根據(jù)靜態(tài)變量的值分析請求的合法性,執(zhí)行速度很快。

將XML文件放置在網(wǎng)站bin目錄下具有另一個優(yōu)點,每當(dāng)XML發(fā)生改變,ASP.NET就會自動重新加載dll程序,無需重啟網(wǎng)站和IIS,十分方便。

(2)過濾效果

圖2是dll程序記錄的一部分過濾日志,分析日志發(fā)現(xiàn),SQL注入攻擊頻繁發(fā)生且變化多端,只有使用正則表達式才能保證高效全面的過濾。

圖2 SQL過濾日志

4 結(jié)語

本文提出的基于HttpModule攔截SQL注入攻擊的方法,靈活高效、簡便易用,在一定程度上可以替代WAF且完全免費,適用于基于ASP.NET架構(gòu)的Web服務(wù)器。

[1] 張慧琳,鄒維.網(wǎng)頁木馬機理與防御技術(shù)[J].軟件學(xué)報,2013.

[2] 王云,郭外萍.Web項目中的SQL注入問題研究與防范方法 [J].計算機工程與設(shè)計,2010.

[3] 楊小麗,袁丁等.防SQL注入攻擊的數(shù)據(jù)庫驅(qū)動設(shè)計與實現(xiàn)[J].計算機工程與設(shè)計,2010.

[4] 梁玲.網(wǎng)頁木馬植入與防范技術(shù)研究[J].太原師范學(xué)院學(xué)報(自然科學(xué)版),2010.

[5] 黃景文. SQL注入攻擊的一個新的防范策略[J].微計算機信息,2008.

[6] 陳小兵,張漢煜,駱力明等.SQL注入攻擊及其防范檢測技術(shù)研究[J].計算機工程與應(yīng)用,2007.

[7] 蔣繼婭,劉彤,王樹威等.Web應(yīng)用中的SQL注入攻擊與防護方案研究[J].計算機安全,2008.

[8] 王攻明,吳華瑞等.正則表達式在電子政務(wù)客戶端校驗中的應(yīng)用[J].計算機工程,2007.

淄博市科技創(chuàng)新項目(編號:2016kj010042);山東輕工職業(yè)學(xué)院院級項目(編號:2016GC01)。

猜你喜歡
實例屏蔽網(wǎng)頁
把生活調(diào)成“屏蔽模式”
好日子(2022年3期)2022-06-01 06:22:10
朋友圈被屏蔽,十二星座怎么看
基于CSS的網(wǎng)頁導(dǎo)航欄的設(shè)計
電子制作(2018年10期)2018-08-04 03:24:38
滿足CLASS A++屏蔽性能的MINI RG59集束電纜的研發(fā)
電線電纜(2017年5期)2017-10-18 00:52:04
基于URL和網(wǎng)頁類型的網(wǎng)頁信息采集研究
電子制作(2017年2期)2017-05-17 03:54:56
幾乎最佳屏蔽二進序列偶構(gòu)造方法
網(wǎng)頁制作在英語教學(xué)中的應(yīng)用
電子測試(2015年18期)2016-01-14 01:22:58
完形填空Ⅱ
完形填空Ⅰ
10個必知的網(wǎng)頁設(shè)計術(shù)語
时尚| 胶州市| 永善县| 沾益县| 通江县| 海伦市| 渝北区| 沙河市| 安义县| 中江县| 图木舒克市| 揭西县| 讷河市| 邹城市| 峨眉山市| 新源县| 秦安县| 边坝县| 南开区| 隆德县| 尼木县| 隆子县| 夹江县| 理塘县| 洛阳市| 卢湾区| 商南县| 苍梧县| 阿鲁科尔沁旗| 九江市| 尉犁县| 亳州市| 淳化县| 穆棱市| 慈利县| 海原县| 海伦市| 汉源县| 辰溪县| 乐至县| 凤山县|