用ISAPI Filter建立IIS“防火墙”

来源 :中国教育信息化·高教职教 | 被引量 : 0次 | 上传用户:JK0803_liuchao
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:本文深入探讨了用ISAPI Filter建立IIS“防火墙”的原理和方法,并给出了保护Access数据库文件不被用户下载的例子来说明具体的实现方法。
  关键词:ISAPI IIS 防火墙 SQL注入
  中图分类号:TP393.08 文献标识码:B 文章编号:1673-8454(2009)03-0052-02
  
  随着Internet的飞速发展,安全问题变得日益重要,防火墙技术越来越受到人们的重视。而今,Microsoft?誖Windows?誖家族的Internet 信息服务(IIS)成为广大中小企业的Web平台,它在Intranet、Internet或Extranet上提供了集成、可靠、可伸缩、可管理的 Web 服务器功能,同时可以执行的多种脚本满足用户动态内容的交互。有很多网站的后台管理是直接从网上下载的源代码,若这些源代码存在漏洞也不容易发现,本文介绍了一种利用ISAPI(Internet Server Application Programming Interface,互联网应用程序编程接口)来建立IIS“防火墙”技术,该技术具有安全、稳定、易用等优点,且不需要修改原始的网站源代码,能在网站源代码存在漏洞的情况下防御攻击,实现防火墙部分功能。
  
  一、ISAPI Filter概述
  
  ISAPI是由微软和Process软件公司联合提出的Web服务器上的API标准。ISAPI被分为两种类型:ISAPI Server Extension(ISAPI服务器扩展)和ISAPI Filter(ISAPI过滤器)。其中,ISAPI Server Extension 可实现通常CGI 程序的功能,它利用一些特殊的链接,指向服务器的作业,供程序开发人员设计一些扩展功能;而ISAPI Filter 则可为IIS提供纵向扩展的功能,它倾向于构造服务器直接调用的模块,提供一种无缝链接部件用于监测来自于服务器的HTTP 请求。ISAPI Filter的应用程序以动态链接库的形式参与Web服务器的运作,它在Web Server 启动时被调用,在Web Server 停止时被卸载。ISAPI Filter 位于服务器和客户端之间,能够对Web服务器和客户端之间的通信进行预处理(Pre-processing of requests)和后处理(Post-processing)。用户对Web服务器的请求均会先通过ISAPI Filter进行过滤,而Web服务器返回浏览器的响应也会首先经ISAPI Filter过滤,才能触发IIS的响应。ISAPI Filter能用来定制以下事件:处理HTTP协议头预处理、接收发送数据的预处理、HTTP会话结束信息处理、自定义的安全认证机制、数据压缩、数据加密、URL映射信息处理、日志记录处理等。由此可见,灵活利用这些定制处理,就可以完成许多看似难以实现的功能,如:统计文件访问量、防SQL注入、防文件下载、限制IP地址访问、会话结束等,可以实现许多依赖防火墙才能实现的功能,定制一个自己的IIS“防火墙”。
  
  二、创建ISAPI Filter的方法
  
  一个标准的ISAPI Filter由以下几个部分组成:过滤器初始化、消息接收过滤、事件处理、退出处理。创建ISAPI Filter非常简单,只需完成3个接口DLL函数即可。它们是GetFilterVersion( )和HttpFilterProc( )和TerminateFilter( )。可以查看Microsoft Developer Network(MSDN)了解详细的帮助。ISAPI Filter是动态链接库(DLL)文件,可以采用多种编程语言开发,如:VC 、VB或C/C 等语言开发。开发时可以直接使用API函数,也可以使用Microsoft Foundation Classes(MFC,微软基础类库)。前者生成的文件小,耗用系统资源小,开发时相对复杂一些,后者生成的文件较大,运行时效率也不如前者,并且离不开MFC的支持,但开发时较为便利。因此常用的做法是在MFC下开发,开发完后再移植为API。本文采用Windows C语言开发。IIS调用每个Filter提供的GetFilterVersion()函数,获得Filter所需要的服务器版本,并与自己的版本相比较,以保证版本兼容以及该Filter希望处理的事件类型。ISAPI Filter是通过事件来激活的,当满足条件的事件到达时,服务器就会调用Filter引出的函数HttpFilterProc( )对该事件进行处理,在这个函数中根据不同事件作不同处理,服务器和HttpFilterProc( )之间是通过过滤器上下文(Http Filter Context)来进行通信的。IIS停止时调用TerminateFilter( ),通常在该函数中释放程序所用资源。接下来通过例子说明具体操作过程。
  
  三、示例如何用ISAPI Filter建立IIS“防火墙”
  
  1.保护Access文件原理
  通过对客户端的请求判断其访问文件的扩展名并进行过滤,就可以实现保护Access数据库文件不被用户下载。
  因为Access数据库文件的扩展名为mdb,当客户端访问扩展名为mdb的文件时,就拒绝其访问,并给出警告信息。
  (1)创建Win32 Dynamic-Link Library项目
  (2)过滤器初始化
  过滤器初始化一般是设置版本信息、优先级、过滤事件,这些工作在GetFilterVersion()中完成,如:
  BOOL WINAPI GetFilterVersion(PHTTP_FILTER_ VERSION pVer)
  {
  pVer->dwFilterVersion = HTTP_FILTER_REVISION;
  lstrcpy(pVer->lpszFilterDesc,"Filter mdb");
  pVer->dwFlags = SF_NOTIFY_URL_MAP;
  return TRUE;
  }
  上面这段程序中“pVer->dwFlags=SF_NOTIFY_URL_ MAP;”表示ISAPI过滤器程序所关注的事件为逻辑URL映射成物理路径事件。当该事件发生时,IIS会传送一个NotificationType的变量给HttpFilterProc函数,由该函数对该事件做出处理。
  (3)事件处理
  DWORD WINAPI HttpFilterProc(HTTP_FILTER_ CONTEXT *pfc,DWORD noteType,VOID *pvNote)
  {
  char urls[256];
  char buf[255];
  DWORD lenURL;
  char *szExtension;
  intilen;
  strcpy(urls,((PHTTP_FILTER_URL_MAP)pvNote)->pszURL);
  //得到客户端访问的URL,保存在urls中
  _strlwr(urls);//将urls转换为小写
  lenURL = strlen(urls);
  szExtension=
其他文献
美国软件与信息产业协会(SIIA:Software and Information Industry Association)近日宣布, 美国高等教育界值得信赖的合作伙伴Timecruiser Computing Corporation(TCC)荣获2008年度CODiE教育软件类的“最佳大专院校全面解决方案”奖。为TCC赢得该奖项的软件产品CampusCruiser?誖with CourseCr
又到了小朋友最喜欢的亲子运动会时间了,作为主持人,由于近期天气温差反常,再加上自身用嗓过度,我的嗓音明显有破音的迹象。但是,为了调动现场的气氛,我还是不遗余力地“呐喊”“嘶吼”,直到到最后再也喊不出来了。一旁的搭档老师让我歇歇,由她来主讲,我负责用动作调动现场气氛。在我俩的配合下,现场的气氛到达了顶点。活动圆满落幕,我也如释重负,松了一口气!  运动会结束后,很多家长都给我发消息,提醒我注意保暖、
在自然角开展观察记录活动,可以帮助幼儿掌握观察对象的第一手资料,习得科学的观察记录方法,进而提高科学素养。但是,小班幼儿的注意力不稳定,无意注意占主导,有意注意初步形成,手指的小肌肉群尚未发育完全,因此进行观察记录活动往往只有“3分钟热度”,观察带有较大的随意性,记录多是随意涂鸦。在这个“教育 ”时代,我尝试利用iPad在自然角和孩子们一起观察记录。以下以对杨花萝卜的观察为例,来看孩子记录的情况。
名次 網站名称 网址 Alexa 名次 网站名称 网址 Alexa
教师阅读与专业发展显著正相关。阅读是自我学习和终身学习的重要途径,通过阅读,不仅能获取教育教学的新知识和新观念,有效拓展视野,也能够提高思维的深刻性、严密性和批判性。  在幼儿园中,教师们纷纷表示缺少阅读氛围和资源,期待创设良好阅读环境;我们也发现,教师阅读的意愿比较强烈,但是自觉性、坚持性和计划性相对薄弱。为此,我园于2017年9月成立“峰幼读书项目组”,开展教师阅读的相关研究和推进工作,并确立
摘 要:随着社会的多元化需求,学习者面临的学习现状也发生了变化:我们的学校教育不能再培养具有统一水准、统一规格的毕业生,而是在学习者的专业发展上尽量多元化、个性化,按照社会的要求塑造各个领域和行业的实践者。同时,课堂作为主要的知识获取渠道已经不能满足学习者的需求,学习者需要不断拓展更多的学习渠道,即随时随地进行学习才有可能获得社会所需的知识和能力。本文从长尾理论的角度来分析网络非正式学习的内涵以及
摘 要:本文从实验教学管理出发,针对开放教学与管理的实际需求,在.NET平台上成功构建了基于WEB的开放实验教学管理系统的总体方案,介绍了系统的功能模块,分析了系统实现的关键技术;开放实验教学管理系统的建立,改变了传统实验教学单一的教学模式,适应网络环境下的开放式教学管理模式,提高了实验教学与管理的质量和效率。  关键词:开放实验教学管理 ASP.NET B/S 结构   中图分类号:G434 文
摘 要:本文通过对湖南省高校数字图书馆建设的研究,分析总结地处我国中部、经济欠发达的湖南省省级区域性高校数字图书馆建设的经验,提出湖南省高校数字图书馆在新时期可持续发展的思路。  关键词:区域性;高校;数字图书馆;资源共享  中图分类号:G250.73文献标识码:文章编号:1673-8454(2012)13-0052-04  读者的文献资源需求是千差万别的,而单个的乃至一个地区的图书馆,都不可
摘 要:本文在综述在线教师角色基础上,利用社会网络分析方法、内容分析方法和访谈法,按照期初、期中和期末三个阶段对一位在线教师的角色进行了分析。社会网络分析结果显示,教师的在线参与在不同阶段有较大差异;内容分析结果则发现教师的在线活动性质呈现出阶段性的变化,其中最集中的是教学设计和促进对话,表明这类角色是教师最为看重的活动类型;访谈结果表明,教师能有目的、有意识地开展相关在线学习活动并达到预期目的。
摘   要:本文以复旦大学研究生招生信息化建设为例,通过信息技术与组织管理改革相结合,对研究生招生组织结构和业务流程重组,将传统的以职能管理为主的组织管理模式(“旧系统”)向扁平式业务流程型组织管理机制(“新系统”)转变创新,以适应创新和变革的社会发展需要。  关键词:研究生招生;信息化;流程重组;组织管理创新  中图分类号:G473.2文献标志码:B文章编号:1673-8454(2012)23-