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

?

用ISAPI?。疲椋欤簦澹蚪ⅲ桑桑印胺阑饓Α?/h1>
2009-03-10 09:50呂浩勇王仕杰張朝陽
中國教育信息化·高教職教 2009年2期
關(guān)鍵詞:防火墻

呂浩勇 王仕杰 張朝陽

摘 要:本文深入探討了用ISAPI Filter建立IIS“防火墻”的原理和方法,并給出了保護(hù)Access數(shù)據(jù)庫文件不被用戶下載的例子來說明具體的實(shí)現(xiàn)方法。

關(guān)鍵詞:ISAPI IIS 防火墻 SQL注入

中圖分類號(hào):TP393.08 文獻(xiàn)標(biāo)識(shí)碼:B 文章編號(hào):1673-8454(2009)03-0052-02

隨著Internet的飛速發(fā)展,安全問題變得日益重要,防火墻技術(shù)越來越受到人們的重視。而今,Microsoft?誖Windows?誖家族的Internet 信息服務(wù)(IIS)成為廣大中小企業(yè)的Web平臺(tái),它在Intranet、Internet或Extranet上提供了集成、可靠、可伸縮、可管理的 Web 服務(wù)器功能,同時(shí)可以執(zhí)行的多種腳本滿足用戶動(dòng)態(tài)內(nèi)容的交互。有很多網(wǎng)站的后臺(tái)管理是直接從網(wǎng)上下載的源代碼,若這些源代碼存在漏洞也不容易發(fā)現(xiàn),本文介紹了一種利用ISAPI(Internet Server Application Programming Interface,互聯(lián)網(wǎng)應(yīng)用程序編程接口)來建立IIS“防火墻”技術(shù),該技術(shù)具有安全、穩(wěn)定、易用等優(yōu)點(diǎn),且不需要修改原始的網(wǎng)站源代碼,能在網(wǎng)站源代碼存在漏洞的情況下防御攻擊,實(shí)現(xiàn)防火墻部分功能。

一、ISAPI Filter概述

ISAPI是由微軟和Process軟件公司聯(lián)合提出的Web服務(wù)器上的API標(biāo)準(zhǔn)。ISAPI被分為兩種類型:ISAPI Server Extension(ISAPI服務(wù)器擴(kuò)展)和ISAPI Filter(ISAPI過濾器)。其中,ISAPI Server Extension 可實(shí)現(xiàn)通常CGI 程序的功能,它利用一些特殊的鏈接,指向服務(wù)器的作業(yè),供程序開發(fā)人員設(shè)計(jì)一些擴(kuò)展功能;而ISAPI Filter 則可為IIS提供縱向擴(kuò)展的功能,它傾向于構(gòu)造服務(wù)器直接調(diào)用的模塊,提供一種無縫鏈接部件用于監(jiān)測來自于服務(wù)器的HTTP 請求。ISAPI Filter的應(yīng)用程序以動(dòng)態(tài)鏈接庫的形式參與Web服務(wù)器的運(yùn)作,它在Web Server 啟動(dòng)時(shí)被調(diào)用,在Web Server 停止時(shí)被卸載。ISAPI Filter 位于服務(wù)器和客戶端之間,能夠?qū)eb服務(wù)器和客戶端之間的通信進(jìn)行預(yù)處理(Pre-processing of requests)和后處理(Post-processing)。用戶對Web服務(wù)器的請求均會(huì)先通過ISAPI Filter進(jìn)行過濾,而Web服務(wù)器返回瀏覽器的響應(yīng)也會(huì)首先經(jīng)ISAPI Filter過濾,才能觸發(fā)IIS的響應(yīng)。ISAPI Filter能用來定制以下事件:處理HTTP協(xié)議頭預(yù)處理、接收發(fā)送數(shù)據(jù)的預(yù)處理、HTTP會(huì)話結(jié)束信息處理、自定義的安全認(rèn)證機(jī)制、數(shù)據(jù)壓縮、數(shù)據(jù)加密、URL映射信息處理、日志記錄處理等。由此可見,靈活利用這些定制處理,就可以完成許多看似難以實(shí)現(xiàn)的功能,如:統(tǒng)計(jì)文件訪問量、防SQL注入、防文件下載、限制IP地址訪問、會(huì)話結(jié)束等,可以實(shí)現(xiàn)許多依賴防火墻才能實(shí)現(xiàn)的功能,定制一個(gè)自己的IIS“防火墻”。

二、創(chuàng)建ISAPI Filter的方法

一個(gè)標(biāo)準(zhǔn)的ISAPI Filter由以下幾個(gè)部分組成:過濾器初始化、消息接收過濾、事件處理、退出處理。創(chuàng)建ISAPI Filter非常簡單,只需完成3個(gè)接口DLL函數(shù)即可。它們是GetFilterVersion( )和HttpFilterProc( )和TerminateFilter( )??梢圆榭碝icrosoft Developer Network(MSDN)了解詳細(xì)的幫助。ISAPI Filter是動(dòng)態(tài)鏈接庫(DLL)文件,可以采用多種編程語言開發(fā),如:VC++、VB或C/C++等語言開發(fā)。開發(fā)時(shí)可以直接使用API函數(shù),也可以使用Microsoft Foundation Classes(MFC,微軟基礎(chǔ)類庫)。前者生成的文件小,耗用系統(tǒng)資源小,開發(fā)時(shí)相對復(fù)雜一些,后者生成的文件較大,運(yùn)行時(shí)效率也不如前者,并且離不開MFC的支持,但開發(fā)時(shí)較為便利。因此常用的做法是在MFC下開發(fā),開發(fā)完后再移植為API。本文采用Windows C語言開發(fā)。IIS調(diào)用每個(gè)Filter提供的GetFilterVersion()函數(shù),獲得Filter所需要的服務(wù)器版本,并與自己的版本相比較,以保證版本兼容以及該Filter希望處理的事件類型。ISAPI Filter是通過事件來激活的,當(dāng)滿足條件的事件到達(dá)時(shí),服務(wù)器就會(huì)調(diào)用Filter引出的函數(shù)HttpFilterProc( )對該事件進(jìn)行處理,在這個(gè)函數(shù)中根據(jù)不同事件作不同處理,服務(wù)器和HttpFilterProc( )之間是通過過濾器上下文(Http Filter Context)來進(jìn)行通信的。IIS停止時(shí)調(diào)用TerminateFilter( ),通常在該函數(shù)中釋放程序所用資源。接下來通過例子說明具體操作過程。

三、示例如何用ISAPI Filter建立IIS“防火墻”

1.保護(hù)Access文件原理

通過對客戶端的請求判斷其訪問文件的擴(kuò)展名并進(jìn)行過濾,就可以實(shí)現(xiàn)保護(hù)Access數(shù)據(jù)庫文件不被用戶下載。

因?yàn)锳ccess數(shù)據(jù)庫文件的擴(kuò)展名為mdb,當(dāng)客戶端訪問擴(kuò)展名為mdb的文件時(shí),就拒絕其訪問,并給出警告信息。

(1)創(chuàng)建Win32 Dynamic-Link Library項(xiàng)目

(2)過濾器初始化

過濾器初始化一般是設(shè)置版本信息、優(yōu)先級(jí)、過濾事件,這些工作在GetFilterVersion()中完成,如:

BOOL WINAPI GetFilterVersion(PHTTP_FILTER_ VERSION pVer)

{

pVer->dwFilterVersion = HTTP_FILTER_REVISION;

lstrcpy(pVer->lpszFilterDesc,"Filter mdb");

pVer->dwFlags = SF_NOTIFY_URL_MAP;

return TRUE;

}

上面這段程序中“pVer->dwFlags=SF_NOTIFY_URL_ MAP;”表示ISAPI過濾器程序所關(guān)注的事件為邏輯URL映射成物理路徑事件。當(dāng)該事件發(fā)生時(shí),IIS會(huì)傳送一個(gè)NotificationType的變量給HttpFilterProc函數(shù),由該函數(shù)對該事件做出處理。

(3)事件處理

DWORD WINAPI HttpFilterProc(HTTP_FILTER_ CONTEXT *pfc,DWORD noteType,VOID *pvNote)

{

char urls[256];

char buf[255];

DWORD lenURL;

char *szExtension;

intilen;

strcpy(urls,((PHTTP_FILTER_URL_MAP)pvNote)->pszURL);

//得到客戶端訪問的URL,保存在urls中

_strlwr(urls);//將urls轉(zhuǎn)換為小寫

lenURL = strlen(urls);

szExtension=&urls[lenURL - 3];//得到訪問文件的擴(kuò)展名

if ( strcmp(szExtension, "mdb") == 0 )

//比較文件擴(kuò)展名是否為mdb

{

sprintf(buf,"擴(kuò)展名為mdb的文件不允許訪問,請與管理員聯(lián)系。");

ilen=strlen(buf);

(pfc->WriteClient)(pfc,buf,&ilen ,0);

//如果訪問的是mdb文件,向客戶端發(fā)出警告信息

return SF_STATUS_REQ_FINISHED;

//返回SF_STATUS_REQ_FINISHED表示會(huì)話結(jié)束

}

return SF_STATUS_REQ_NEXT_NOTIFICATION;

//返回SF_STATUS_REQ_NEXT_NOTIFICATION喚起下一個(gè)Filter響應(yīng)事件

}

2.在服務(wù)器上配置ISAPI Filter

為使ISAPI過濾器能夠運(yùn)行,對應(yīng)于不同版本的操作系統(tǒng)還需要采取不同措施:

(1)Windows NT:要在注冊表的如下鍵值中存放ISAPI Filter的文件名,IIS服務(wù)器啟動(dòng)時(shí)從該鍵值中獲得Filter的文件名并加載它們。

HKEY_LOCAL_MACHINESystemCurrentControlSetServicesW3SVCParameters FilterDlls鍵值為ISAPI過濾器文件的全路徑名稱,不同的ISAPI過濾器文件之間用“;”分隔,可以根據(jù)執(zhí)行的優(yōu)先順序加在適當(dāng)?shù)奈恢谩TO(shè)置好后重新啟動(dòng)IIS服務(wù),ISAPI過濾器就能發(fā)揮作用了。

(2)Windows 2000,Windows Server 2003:打開Internet信息服務(wù)管理器,關(guān)閉IIS服務(wù),在Web站點(diǎn)屬性頁上選中ISAPI篩選器標(biāo)簽,將Filter加入到列表框中,重新啟動(dòng)IIS服務(wù)即能使ISAPI過濾器生效了。

3.測試效果

在瀏覽器中輸入“Http://127.0.0.1/a.mdb”瀏覽器顯示如下信息:擴(kuò)展名為mdb的文件不允許訪問,請與管理員聯(lián)系;訪問服務(wù)器的其他文件,均正常。這就有效地保護(hù)了Web服務(wù)器上擴(kuò)展名為mdb的文件。

四、結(jié)束語

Web服務(wù)器安全是一個(gè)需要不斷認(rèn)識(shí)的過程。針對目前廣泛使用的IIS服務(wù)器,本文的方法有一定的實(shí)際意義,通過ISAPI Filter可以方便地完成許多強(qiáng)大的功能(如:統(tǒng)計(jì)文件訪問量、防SQL注入、防文件下載、限制IP地址訪問、結(jié)束會(huì)話等),使Web服務(wù)器的安全得到進(jìn)一步提高,同時(shí)使信息得到有效的處理。

參考文獻(xiàn):

[1]Charles Petzold.Windows程序設(shè)計(jì)(第五版)[M].北京:北京大學(xué)出版社,2001:1162-1175.

[2]George Shepherd.THE ASP COLUMN[J].MSDN Magazine, 1528-4859, 2004 Vol.19 No.2

[3]Panos Kougiouris. Intercept, Monitor, and Modify Web Requests with HTTP Filters in ISAPI and ASP.NET[J]. MSDN Magazine, 1528-4859, 2002 Vol.17 No.8

[4] JAY FRAZIER.IIS & ISAPI[J].Web techniques, 1999 Vol.4 No.8

[5] Microsoft Developer Network 2005(MSDN)

猜你喜歡
防火墻
筑牢防火墻 系緊安全帶
“一封家書”寄深情 筑牢疫情“防火墻”
全民總動(dòng)員,筑牢防火墻
構(gòu)建防控金融風(fēng)險(xiǎn)“防火墻”
防火墻技術(shù)在網(wǎng)絡(luò)安全應(yīng)用中的現(xiàn)狀
計(jì)算機(jī)網(wǎng)絡(luò)安全中防火墻技術(shù)的應(yīng)用思考
智慧防火墻
海南新農(nóng)合有了“防火墻”
在舌尖上筑牢抵御“僵尸肉”的防火墻
下一代防火墻要做的十件事

吴忠市| 江西省| 子洲县| 玉门市| 黄龙县| 罗江县| 分宜县| 梅州市| 南和县| 周口市| 鄯善县| 阿鲁科尔沁旗| 和林格尔县| 巧家县| 图片| 张家口市| 水城县| 吉木萨尔县| 汝阳县| 芦溪县| 连云港市| 永吉县| 蛟河市| 新晃| 旺苍县| 海宁市| 九台市| 广河县| 沂南县| 固阳县| 安龙县| 象山县| 西宁市| 新河县| 永城市| 华坪县| 土默特左旗| 浦北县| 金塔县| 贡嘎县| 娱乐|