优秀的软件开发团队:深圳升蓝软件 数据库开发 .Net技术  |  ASP技术 PHP技术 JSP技术 应用技术类     
热门推荐
升蓝OA办公自动化系统
基于.Net技术的网络
协同办公环境
 
ASP基础
数据库相关
安全加密
全文检索
ASP应用
打印相关
客户端相关
XML相关
系统相关
正则表达式
ASP技巧
组件开发
脚本编码
FSO专题
邮件相关
远程脚本
性能优化
 
相关链接
深圳升蓝软件:系统集成、办公自动化平台、电子商务、电子政务、Web数据库、企业网站、游戏、手机应用程序、CDMA软件、电子出版物等,为客户提供优秀的解决方案
 
升蓝(www.hi-blue.com)为企业管理、政府办公提供成熟的、易于实施的IT技术服务,我们的解决方案包括OA办公自动化系统CRM客户关系管理系统ERP企业生产管理和订单管理系统电子政务系统、知识管理系统、企业门户、商业智能、工程项目管理等等...
 
电子政务解决方案
塑料/橡胶管理系统
知识管理系统简介
多媒体光盘方案
ERP企业资源管理
订单计划管理系统
PM工程项目管理系统
会员管理系统
相关资料下载
OA办公自动化系统
CRM客户关系管理系统
在线试用版本说明
OA 系统的用户手册
 
 
 
 
升蓝开发团队 > 技术资料 > ASP技术 > 安全加密 : 一个颇有用途的ISAPIFILTER(使您的INC、ASA文件安全一

一个颇有用途的ISAPIFILTER(使您的INC、ASA文件安全一


March 25,2004
在以前看到老外的一篇文章,现在记不起这个很不错的热情的有如我一般的年轻人了,不过邮箱里还有和他讨论的邮件。
有不少站点可能都有这样的情况,利用.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
希望该文章能对您有用。
       
数据库开发 | .Net技术 | ASP技术 | PHP技术 | JSP技术 | 应用技术类 | 升蓝开发小组
Copyright ? 2001-2004 Shenzhen Hi-blue Software Team 升蓝开发小组 All rights reserved