|
![]() |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
在以前看到老外的一篇文章,现在记不起这个很不错的热情的有如我一般的年轻人了,不过邮箱里还有和他讨论的邮件。 有不少站点可能都有这样的情况,利用.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, "rnrn<html>rn<head><title>安全文件 </title></head>rn<body>rn<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>rn</body>rn</html>rn"); 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文件拷贝到winntsystem32inetsrv目录下,然后在站点的属性里面的ISAPI过滤器添加一个过滤器,映射DLL到该文件即可。 重新启动W3SVC服务,然后访问:http://localhost/xxx.inc可以看到返回信息。 有任何问题可以联系:bingb@emout.com.cn 希望该文章能对您有用。 返回类别: 教程 上一教程: 保护你ASP页面的两种办法 下一教程: RS.OPEN SQL,CONN,1,1 的后两个 1,1 各代表什么 您可以阅读与"用ISAPIFILTER使INC、ASA文件安全"相关的教程: · 关于INC文件的解释 · ASP动态INCLUDE文件 · asp动态include文件 · ASP文件中的安全问题 · 什么是GLOBAL.ASA文件 |
![]() ![]() |
快精灵印艺坊 版权所有 |
首页![]() ![]() ![]() ![]() ![]() ![]() ![]() |