IIS7模块开发研究――实现拒绝图片跨网站连接请求.docVIP

IIS7模块开发研究――实现拒绝图片跨网站连接请求.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
IIS7模块开发研究――实现拒绝图片跨网站连接请求   摘要:IIS7中应用程序池处理的每项功能都被委托给一个具体模块,并且IIS7允许根据需要开启或禁用某个具体模块。现在,可以将应用程序池本身视作为一个简单的工作流或处理管道,在请求的生命周期过程中,每一个阶段都被称为一个事件,模块为事件处理提供了相关的功能支持。通过自定义模块我们可以方便灵活的将自定义功能添加到Web服务器中去。   关键词:IIS7模块;.NET;request-header   中图分类号:TP311文献标识码:A文章编号:1009-3044(2011)29-7113-02   IIS与其它的Web服务器平台类似,随着不断地演进,IIS的复杂性越来越高,功能越来越强。其核心服务也同样得到了扩展和增强,性能不断提高,功能也不断增强。随着功能不断增强,IIS提供了越来越多的特性,系统资源开销越来越大。对于那些不需要使用这些增强特性的Web应用程序来说,这些高级特性只是浪费了宝贵资源,增加了系统负担,然而却毫无用处。   IIS7考虑了这方面的问题,其提供了具有很强适应能力的core server系统,这个系统可以剪裁为具有很高性能的并且相当健壮的处理引擎。IIS7处理请求的过程如图1。   从图中可以看到,IIS7中应用程序池处理的每项功能都被委托给一个具体模块,并且IIS7允许根据需要开启或禁用某个具体模块。现在,可以将应用程序池本身视作为一个简单的工作流或处理管道,在请求的生命周期过程中,每一个阶段都被称为一个事件,模块为事件处理提供了相关的功能支持。   微软公司随IIS7一同发行了40多个模块,一般情况下只需要使用一部分默认模块,就可以获得一个功能完美的Web服务器。如果需要实现一些默认模块没有提供的功能,我们也可以自己为IIS7开发模块。   1 拒绝图片跨网站连接请求原理   所谓图片跨网站连接请求指的是,如果我们的Web网站中包含了大量图片资源,而这些图片资源同时被其他Web网站的页面引用,那么当用户访问其他Web网站的页面时,将会访问我们的Web服务器,所以不仅会浪费我们的Web服务器的带宽资源,而且还会影响到其他资源的使用。   拒绝图片跨网站连接请求的关键在于检查我们的Web网站所接收到图片资源的请求头(request-header)中的两个字段Host与Referer,Host字段保存了请求目标Web网站的地址,Referer字段保存了请求发起页面的完整URL,如果Referer字段与Host字段包含的Web网站的地址不一致,则可以断定该请求是一个跨网站连接请求,也就是一个应该被拒绝的请求。   如果能创建一个IIS7模块完成图片资源请求中的Referer字段与Host字段比较的话,就能在我们的Web网站中实现拒绝图片跨网站连接请求了。   2 创建图片资源请求分析模块   IIS7模块的开发可以利用托管代码完成,也就是说我们可以在.NET平台上为IIS7创建托管模块。图片资源请求分析模块可以利用Visual Studio 2010作为集成开发环境创建,该模块首先需要满足的第一个要求是实现IHttpModule接口,实现IHttpModule接口是创建IIS7托管模块的基本要求。所以首先可以在Visual Studio 2010中创建一个类文件,在该类文件中实现IHttpModule接口,代码如下:   using System;   using System.Web;   using System.Collections.Specialized;   namespace CustomModules   {public class PicLinkAnalysis : IHttpModule   {public PicLinkAnalysis()   {}   public void Dispose()   {}   public void Init(HttpApplication context)   {}   }}   上述代码同时也说明了基本的模块框架。IHttpModule接口的实现必须能够提供基本的构造方法PicLinkAnalysis()、初始化方法Init(HttpApplication context)和对象销毁方法Dispose()。   接下来,由于网站需要在对图片资源的请求阶段分析链接,所以我们必须让模块能处理BeginRequest事件。可以在模块初始化方法中添加下述代码实现:   public void Init(HttpApplication context)   {context.BeginRequest += new EventHandler(con

您可能关注的文档

文档评论(0)

yingzhiguo + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:5243141323000000

1亿VIP精品文档

相关文档