国产一级一区二区_segui88久久综合9999_97久久夜色精品国产_欧美色网一区二区

掃一掃
關注微信公眾號

用ISAPI FILTER保護INC、ASA文件
2007-05-30   賽迪網技術社區

  有不少站點可能都有這樣的情況,利用.inc以及.asa包含文件來存儲數據庫連接信息,特別是.inc的文件,想改掉有需要太多的時間和做大幅度的程序調整,比如我有個客戶就是光.inc文件就有幾十個,更別說asp文件了,想改是無從下手的。

  于是我利用那位外國朋友的經驗,做了很少的一點改動,形成一個isapi的過濾器,希望能使您的站點的inc以及asa文件安全一點。

  我不想把標準的ISAPI的接口函數做一一介紹,比較全面的知識您可以利用VC的ISAPI工程模板來學習。在這里我著重介紹OnUrlMap以及如何用它來完成我們保護INC和其他文件安全性的過程。
isapi filter(Internet Server Application Program Interface (ISAPI) filter)是綁定在IIS系統并監控發生在客戶端從WEBSERVER讀取文件事件的一種基于windows的程序應用。

  由于他可以控制客戶端和服務器間的數據交換,我們可以用它來提高WWWSERVER的應用性能比如擴展HTTP日志功能、實現自己的加密和驗證系統。

OnPreprocHeaders -- 服務器預處理客戶端頭文件.
OnAuthentication -- 客戶端驗證.
OnUrlMap -- 服務器映射邏輯URL到物理路徑.
OnSendRawData -- 服務器發送未經處理的數據到客戶端(之前).
OnReadRawData -- 客戶斷發送未經處理的數據到服務器(之后,但在服務器處理之前).
OnLog -- 寫日志到服務器文件.
OnEndOfNetSession -- 會話結束.
下面是OnUrlMap的用法:
DWORD CJsisapiFilter::OnUrlMap(CHttpFilterContext* pCtxt,
PHTTP_FILTER_URL_MAP pMapInfo)
{
// TODO: React to this notification accordingly and
// return the appropriate status code
DWORD lenURL = strlen(pMapInfo->pszURL);
DWORD dwReferer = 250;
const char * szURL = strlwr((char *)pMapInfo->pszURL);
const char * szExtension = &szURL[lenURL - 3];
const char * inExtension = &szURL[lenURL - 4];
char szReferer[250];

//到服務器的數據已經編碼過了
if ( strcmp(szExtension, ".js") == 0 || strcmp(inExtension,".inc") == 0 || strcmp(inExtension,".asa") == 0){
pCtxt->GetServerVariable("HTTP_REFERER", szReferer, &dwReferer);
if ( szReferer[0] != 'h' ) {
char szRedirect[2];
char szContent[300];
DWORD dwRedirect = 2;
DWORD dwContent;
sprintf(szRedirect,"");
sprintf(szContent, "\r\n\r\n<html>\r\n<head><title>安全文件</title></head>\r\n<body>\r\n<b><center><font size=+2>該文件包含非公開信息,您沒有讀取該文件的權限。</font></b><br><br><br><hr><a href=mailto:bingb@emount.com.cn>mailto:bingb@emount.com.cn</a><br></center>\r\n</body>\r\n</html>\r\n");
dwContent = strlen(szContent);
pCtxt->ServerSupportFunction(SF_REQ_SEND_RESPONSE_HEADER,szRedirect,&dwRedirect,NULL);
pCtxt->WriteClient (szContent, &dwContent);
return SF_STATUS_REQ_FINISHED;
}
}
return SF_STATUS_REQ_NEXT_NOTIFICATION;
}

  編譯后將編譯完成的DLL文件拷貝到winnt\system32\inetsrv\目錄下,然后在站點的屬性里面的ISAPI過濾器添加一個過濾器,映射DLL到該文件即可。

  重新啟動W3SVC服務,然后訪問:http://localhost/xxx.inc可以看到返回信息。

熱詞搜索:

上一篇:拒絕破壞 禁用FileSystemObject組件
下一篇:解決注冊表被惡意鎖定的方法

分享到: 收藏
主站蜘蛛池模板: 古蔺县| 耒阳市| 宜兰市| 闽清县| 广东省| 洪雅县| 迭部县| 哈尔滨市| 高雄市| 连南| 逊克县| 昌黎县| 乌鲁木齐县| 江孜县| 武隆县| 无棣县| 富锦市| 双流县| 甘泉县| 馆陶县| 同江市| 吉木乃县| 张家界市| 沈阳市| 孙吴县| 沾益县| 太原市| 平定县| 凤翔县| 江达县| 安图县| 睢宁县| 卓资县| 砚山县| 百色市| 梁河县| 余江县| 高要市| 大兴区| 运城市| 定日县|