用ISAPIfilter使INC、ASA文件安全

2016-01-29 19:48 6 1 收藏

用ISAPIfilter使INC、ASA文件安全,用ISAPIfilter使INC、ASA文件安全

【 tulaoshi.com - ASP 】

在以前看到老外的一篇文章,现在记不起这个很不错的热情的有如我一般的年轻人了,不过邮箱里还有和他讨论的邮件。
    有不少站点可能都有这样的情况,利用.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 希望该文章能对您有用。

来源:http://www.tulaoshi.com/n/20160129/1510151.html

延伸阅读
标签: ASP
      你是怎么把密码储存到数据库里?是以纯文字的方式?你可知道这对安全的危险性?当攻击你网站的人能开启数据库浏览,以纯文字方式存在数据库里的密码一览无疑,基于安全上的考量,你想这样适当吗?有什么办法能够让别人看到数据库里的数据,也没办法知道储存在其中的密码?      &nb...
标签: ASP
  我在国外看到一篇文章,现转译如下。。。的确很有帮助 ASP的一个缺点是当我们在使用一个组件的时候,并不是拿来就可以用了比如你要使用ADO的时候,你得先包含ADOVBS.INC文件或者做类似的工作,看下面的代码: <!--#include virtual="/adovbs.inc"-- <%    Dim objConn, strSQL    Set ...
用JavaScript使链接按钮不断变化 按钮是网页中常常能见到的一种东东。但是用按钮做链接你可能还没有见到过。今天教你的这种方法,不仅可以用按钮来制作链接,而且按钮中链接还能不断变化显示。效果非常好看又能节省页面空间,真是一举两得,赶快试试吧! 点击此处查看效果 一、把下面的程序代码加入到< head < /head 区域中。 &l...
需要哪些心理学知识能懂孩子 我们先用理性的左脑,来了解几个很关键的、发展心理学的重要研究和理论。这些理论看起来有些枯燥或吓人,但明白它们以后,你可能会发现自己看待孩子的角度发生了微妙的变化,而这些微妙的变化也许就正好是孩子最需要、也最实惠受用的。所以,我还是要说明它们。不过,我会尽量试着用比较简单轻松的方法来深入...
标签: 服务器
如何使Linux服务器变得更安全   牢记以下这七点会让你的Linux服务器变得更安全 图1:运行中的服务。 安装所需的服务 如果你打算运行一台服务器,可能会想我有来自Linode的40GB固态硬盘(SSD)存储系统,于是我可以安装想要安装的任何服务。没错,你的地盘你作主:可以在服务器上安装任意软件。不过,别犯想当然的毛病...

经验教程

803

收藏

17
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部