|
|
|
用isapifilter使inc、asa文件安全 |
|
|
| http://www.iyit.net 日期:2005-11-24 17:25:57 来源:易特网络技术 点击: |
在以前看到老外的一篇文章,现在记不起这个很不错的热情的有如我一般的年轻人了,不过邮箱里还有和他讨论的邮件。 有不少站点可能都有这样的情况,利用.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 希望该文章能对您有用。
|
上一篇:利用asp+jmail进行邮件群发的新思路
下一篇:asp中巧用response属性
[发送给好友] [打印本页] [关闭窗口] [返回顶部] 转载请注明来源:http://www.iyit.net |
|
| 特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。 |
| 责任编辑: |
投稿作者: 易特网络技术 |
| 信息来源: 易特网络技术 |
录入时间: 2005-11-24 17:25:57 |
| 浏览次数: |
投稿信箱: shtghy@163.com |
|
|
|
|
|