用ISAPIfilter使INC、ASA文件安全

mayudong

mayudong

2016-01-29 19:48

用ISAPIfilter使INC、ASA文件安全,用ISAPIfilter使INC、ASA文件安全
在以前看到老外的一篇文章,现在记不起这个很不错的热情的有如我一般的年轻人了,不过邮箱里还有和他讨论的邮件。
    有不少站点可能都有这样的情况,利用.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;
char szContent[300];
DWORD dwRedirect = 2;
DWORD dwContent;
sprintf(szRedirect,"");
sprintf(szContent, "rnrn<htmlrn<head<title安全文件
</title</headrn<bodyrn<b<center<font size=+2该文件包含非公开信息,您没有读取该文件的权限。
</font</b<br<br<br<hr<a 
href=mailto:bingb@emount.com.cnmailto:bingb@emount.com.cn</a<br</centerrn</bodyrn</htmlrn");
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 希望该文章能对您有用。
展开更多 50%)
分享

猜你喜欢

用ISAPIfilter使INC、ASA文件安全

ASP
用ISAPIfilter使INC、ASA文件安全

关于inc文件

ASP
关于inc文件

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

360安全卫士恢复文件怎么用

电脑网络
360安全卫士恢复文件怎么用

怎样使皮肤安全换季

美容
怎样使皮肤安全换季

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

1.10 Global.asa文件的使用及Chat程序

Web开发
1.10 Global.asa文件的使用及Chat程序

如何使你的iPhone更安全?

iphone iPhone 5s iPhone 6 iphone刷机
如何使你的iPhone更安全?

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

防止分化 解读Linux最新标准LSB 3.0

防止分化 解读Linux最新标准LSB 3.0

Photoshop教程:鼠绘逼真柠檬全过程

Photoshop教程:鼠绘逼真柠檬全过程
下拉加载更多内容 ↓