一個頗有用途的ISAPIFILTER(使您的INC、ASA檔案安全一點)

來源:互聯網
上載者:User
安全 在以前看到老外的一篇文章,現在記不起這個很不錯的熱情的有如我一般的年輕人了,不過郵箱裡還有和他討論的郵件。
有不少網站可能都有這樣的情況,利用.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可以看到返回資訊。

有任何問題可以聯絡:bingb@emout.com.cn
希望該文章能對您有用。



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。