创建ISAPI过滤器: 前面两节介绍了如何利用ISAPI扩展更好地构造Web站点。本节将介绍构建自己的 ISAPI过滤器的过程。创建ISAPI过滤器过程与创建扩展的过程的起始部分是一样的。下面的步骤将帮助你创建一个程序框架。
注 记住ISAPI过滤器与扩展不同,过滤器在特定事件发生时自动做出反应,而扩展更像是一个应用程序那样被调用。
1. 使用File(文件)|New(新建)命令显示 New 对话框。选中 ISAPI ExtensionWizard(ISAPI扩展向导)(即使要创建的是过滤器,也要用ISAPI ExtensionWizard来创建)。
2. 输入想创建的过滤器的名称。对这个ISA示例我们使用了NoLog,但你可以任意选用其它名称。
3. 单击OK,即出现ISAPI Extension Wizard(ISAPI扩展向导)棗Step 1 of 2对话框。在这里为你的ISA选择各种特性。注意对话框有三个主要区域。选中第一个复选框表示创建过滤器,选中第二个复选框表示创建扩展。第三部分定义如何将MFC链接到你的应用程序中。
4. 选中Filter(过滤器)选项而不选中Extension (扩展)选项(注意加入过滤器也就增加了一些其它步骤)。在Filter Description(过滤器描述)域中,提供一个描述你的ISA 功能的短小扼要的说明。该描述将作为字符串来显示,需要时可以在DLL中使用它。当别人为了使用ISA打开它时,该描述不会出现在Properties(属性)对话框中,所以还要给DLL 的版本信息中加入一些文本。

5. 在Filter Description(过滤器描述)域中输入Classify some log entries for securityreasons(为了安全原因而对日志项进行密级划分)。
6. 单击Next,就能看到如下图所示的ISAPI Extension Wizard(ISAPI 扩展向导)棗Step 2 of 2对话框。

这是选择过滤器能够提供的事件以及监测类型的属性页。有三个方面的情况需要考虑。这些选项的详细介绍请参见“高级技巧”中的“选择过滤器选项”部分。
7. 选中Server log Writes(服务器日志写入)复选框,而不选End of Connection(连接结束)复选框。由于我们创建了一个简单的过滤器来保持某些日志项的密级划分,所以每当用户申请服务器的特殊类型服务时就激活过滤器。
8. 单击Finish,就会看到如下图所示的New Project Information (新建工程信息)对话框。一定要二次核对过滤器的这些设置项,因为New Project Information页提供了对过滤器将要看到的事件进行的详细分类。

9. 单击OK,ISAPI Extension Wizard(ISAPI扩展向导)就会创建所需的程序框架。
这个示例的代码部分简单明了。过滤程序很容易弄得复杂化,从而导致调试很困难。大多数情况下,你应该让过滤器程序尽可能简短。在对出错的过滤器查错时,如果程序是模块化的,将会提供极大的帮助。程序列表13.5列出了为使OnLog() 函数工作而需要添加的代码。

可以看出,为了某个特定目标,我们对日志项进行简单的监测,这个特定目标可以是除另一个Web页之外的任意数量的事情。一旦找到所需的日志项,我们将按照分类设置修改两个成员:pszTarget和pszParameters。显然这种思路已大大简化,不过都有实际的用途。你可能不想让某个特定日志项被别人偷看,这里介绍的方法就可以实现你的目的。记住黑客们经常利用它们在服务器上找到的目志文件,来盗窃公司的内部资源。不仅如此,对某些日志项进行密级划分还有其它原因。在某些情况下,你可能想完全删除某些日志项只是因为不想再监测它们。好了,我们已经详细说明了如何小心使用这种过滤器,不过这将是一个好的开端。
现在可以编译新的ISAPI过滤器了,但是,在你将它移到服务器上的Controls或Scripts目录之后,仍要做一件事。与扩展不同,ISA过滤器在你启动服务器时即被装载。也就是说,如果你使用的是老版本的IIS,那么,就停止目标服务器,生成一个注册表项,然后再次启动该服务器。过滤器将作为启动进程的一部分被装载。
WWW 服务在如下的注册值中保存它的过滤器项:HKEY_LOCAL_MACHINESYSTEMCurrentControlSetservicesW3SVCParametersFilter DLLs。你可能已经在该位置找到一个或多个值。这里要做的是加上一个逗号,然后输入自己新的ISA过滤器的位置。一定要在学习下节之前做这一步,否则过滤器就不会被装载。实际上,如果过滤器工作出了问题,这里是你首先应该检查的地方。
对IIS 4.0以上版本的用户来说,不必为装载ISAPI过滤器而手工编辑注册表了。此时所要完成的工作就是打开Microsoft Management Console(管理控制台),用右键单击需添加过滤器的Web站点,从关联菜单中选择Properties(属性),再选中ISAPZ Filter(过滤器)项,就会看到如下所示的对话框。

单击Add(添加)按钮,就会看到 Filter Properties (过滤器属性)对话框,在Filter Name(过滤器名)域中键入名称,使用Browse(浏览)按钮找到Nolog.DLL文件(或想添加到Web站点的随便什么别的ISAPI过滤器)。选定文件后,其名称将出现于Executable(可执行)域。单击OK关闭Filter Properties(过滤器属性)对话框;再次单击OK关闭Default Web Site Properties(缺省Web站点属性)对话框。IIS将为你自动加载该过滤器。
选择过滤器选项
ISAPI Extension Wizard(ISAPI扩展向导)棗Step 2 of 2页对于过滤器设计者是非常重要的,这是因为它包含了需要为过滤器设置的监测选项。这一页上的选项分三部分。第一部分确定过滤器优先级,缺省设置为Low (低),这在大多数情况下运行良好,一般后台任务使用这一层次的优先级。安全过滤器需要设置为medium(中)优先级,毕竟你不想让过滤器在事件之后再作出反应,在事件发生期间过滤器就作出反应就好得多了。最后,High(高)优先级设置应为关键层次的过滤器保留着,例如,向每个人发出一条消息,声明由于电源故障,服务器即将关机,这时就应使用High优先级了。
ISAPI Extension Wizard(ISAPI扩展向导)-Step 2 of 2对话框的第二部分包含着两个选项。如果用户拥有安全的连接就应复选第一项,例如,如果计划对注册用户提供额外服务,而不让匿名用户得到这些额外服务,那么就应复选第一项了。第二项是不安全端口会话,允许你在用户不拥有对服务器的安全连接时监测事件。如果你有一个Internet一般Web站点,大多数用户都是这样去访问你的站点的。
第三部分是过滤器追踪的事件列表,每当这里指定的事件发生,就调用过滤器,但是,过滤器被调用时有两件事要影响它。如果过滤器的优先级为Low(低),那么High(高)或medium(中)优先级的过滤器将先对事件作出反应。另外,你的过滤器不得不设置成用户当前安全级来监测事件,换言之,如果你把过滤器设置成监测非安全级行动而用户处于安全模式,则过滤器就不会被调用。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10294527/viewspace-123232/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10294527/viewspace-123232/

创建ISAPI过滤器(转)相关推荐

  1. angularjs创建自定义过滤器时欧元符号乱码

    myApp.filter('mycurrency', function(currencyFilter, $sce) {return function(input, country) {var euro ...

  2. 在ASP.NET中实现Url Rewriting

    概要 分析如何使用微软提供的ASP.NET来对动态产生的URL地址进行网址重写. 网址重写是实现一种截取网址请求并将其进行处理后重新指向到一个指定的网址的过程.作者本人在对各种实现网址重写的技术进行研 ...

  3. 在ASP.NET中实现Url Rewriting(非常的有价值!)

    在ASP.NET中实现Url Rewriting 作者:Scott Mitchell 翻译:Janssen 1.0.请一定要抱着批评的态度来看该文章 1.1. 概要 分析如何使用微软提供的ASP.NE ...

  4. 使用Windows NT 的安全性(转)

    使用Windows NT 的安全性: 在上一节,我们已经阐述了推荐使用Windows NT做Web服务器的一些理由,其最重要的一点是,能够使用Windows NT的安全性API.然而,懂得为什么要存在 ...

  5. 使用Internet信息服务器(IIS)(转)

    使用Internet信息服务器(IIS): 在工作中有许多种不同的方法使用IIS(Internet Information Server),其中大部分都是通过传统的静态HTML方案,它需要使用各种类型 ...

  6. Servlet过滤器,Servlet过滤器创建和配置

    第一:Servlet的过滤器的创建和配置,创建一个过滤器对象需要实现javax.servlet.Filter接口,同时实现Filter的3个方法.        第一方法是过滤器中的init()方法用 ...

  7. 为解决存储型xss和sql注入漏洞,创建对应的全局过滤器

    1.存储型xss漏洞 系统由于未对参数过滤,导致可以存储html特殊标签,且返回的数据未经处理显示在web页面中导致存在存储型xss,攻击者可利用xss对用户发起鱼叉攻击获取cookie进入系统.为解 ...

  8. 高手速成 | 过滤器、监听器的创建与配置

    本节讲解过滤器.监听器的创建以及监听事件配置示例. 01.过滤器的创建与配置 [例1]创建过滤器及配置过滤规则. (1) 在Eclipse中新建一个Web项目,取名为Chapt_09.在src目录下, ...

  9. 如何创建 Java Servlet 过滤器

    Java servlet 过滤器是 Java Web 应用程序的基本组件,因为过滤器允许程序员拦截请求并转换响应以用于各种目的.即使您不创建任何过滤器,servlet 容器(如 Tomcat)和 We ...

最新文章

  1. 锂电系统上位—数据中心更高效率运营
  2. 四、从Excel开始,学习Excel的快捷键
  3. leetcode954. 二倍数对数组(treemap)
  4. 计算机 电工学简明教程,电工学简明教程复习要点
  5. Keras 的预训练权值模型用来进行预测、特征提取和微调(fine-tuning)
  6. 《Java线程池》:任务拒绝策略
  7. 对字符串数组中的M个字符串按长度由小到大进行排序
  8. 5年商标之争落幕 货拉拉夺回“货拉拉”商标权
  9. 在java反射中 Class.forName和classLoader的区别
  10. [剑指offer] 7. 斐波那契数列 (递归 时间复杂度)
  11. 自己编写的Java获取CRC16校验码
  12. 10. 了解分配子(allocateor)的约定和限制
  13. 汉密尔顿路径(哈密顿路径)解析
  14. Flow Prediction in Spatio-Temporal Networks Based on Multitask Deep Learning 学习笔记
  15. 【H3C模拟器】基于端口VLAN的交换机配置实验(同一vlan互通)
  16. 简体字与繁体字互相转换
  17. win10配置Sublime Text 3作为latex的编辑器
  18. javascript严格模式详解
  19. Java爬虫之jsoup的使用
  20. JS确认提交confirm方法

热门文章

  1. R语言入门基础知识点笔记——向量
  2. redis 5.0 windows 版本下载链接
  3. Redefinition of enumerator ios
  4. c语言recive的用法,关于receive的用法及解释
  5. 儿童网站成虚拟掘金热最新一站
  6. html中怎么选择所在地,如何操作JS获取用户所在城市及地理位置
  7. 系统的平均并发用户数和并发数峰值如何估算
  8. oracle连接长时间未响应,Oracle的pl/sql客户端请求超时未响应的解决方法及装置与流程...
  9. Ubuntu 无法连接xshell的问题
  10. 2019.4.3拼多多笔试第一题