如何使用HttpModule和HttpHandler对象防盗链

本文介绍了如何利用HttpModule和HttpHandler对象实现防盗链功能,以保护网站资源不被非法引用。HttpModule作为HTTP请求的过滤器,可以在请求到达处理中心前进行检查。在示例中,通过比较请求的来源URL与目标URL,判断是否为盗链,并相应地返回错误提示图片或实际资源。配置Web.config文件以启用防盗链处理。防盗链能有效防止服务器负担加重和合法利益受损。
摘要由CSDN通过智能技术生成

今天我们学习使用HttpModule和HttpHandler对象防盗链
首先,我们要了解HttpModele和HttpHandler对象是什么?

  • HttpModule是HTTP请求的“必经之路”,它可以在该HTTP请求传递到最终的“请求处理中心(HttpHandler)”进行处理之前做一些额外工作,或者在某些情况下终止满足一些条件的HTTP请求,从而起到一个过滤的作用。
  • HttpModele有多个,每次HTTP请求都将逐一通过每个HttpModele。HttpModele和HttpApplication对象是直接交互的。

我们画图来直观展示:

在这里插入图片描述

一、HttpHandler对象实现防盗链

概述:一些不良网站为了在不增加成本的前提下扩充自己站点的内容,经常盗用其他网站的资源,这种现象被称为盗链。 盗链有哪些危害?
1.损害了原网站的合法利益
2.加重了服务器的重担

防盗链演示与防盗链操作
具体要求:
第一步:创建一个网站,网站下的images文件夹中有jpg图片资源,本网站的页面引用图片的相对路径后正常使用。

第二步:创建第二个网站

(1)创建被盗链站点,相关代码如下:
在这里插入图片描述

  <div>
            <asp:Image ID="Image1" runat="server"    ImageUrl="images/one.jpg"/>
            <asp:Image ID="Image2" runat="server"   ImageUrl="images/two.jpg"  />
            <asp:Image ID="Image3" runat="server"   ImageUrl="images/three.jpg"/>
   </div>

(2)创建盗链站点,代码如下:

 <div>
            <asp:Image ID="Image1" runat="server" ImageUrl="http://localhost:49222/images/one.jpg"/>
            <asp:Image ID="Image2" runat="server" ImageUrl="http://localhost:49222/images/two.jpg" />
            <asp:Image ID="Image3" runat="server" ImageUrl="http://localhost:49222/images/three.jpg"/>
 </div>

(3)防盗链操作
1>添加一个Class1类

  //获取上次请求的URL
            Uri lastUrl = context.Request.UrlReferrer;
            //获取本次请求的URL
            Uri currentUrl = context.Request.Url;
            //判断是否为盗链
            if (lastUrl.Host != currentUrl.Host || lastUrl.Port != currentUrl.Port)
            {
                //获取“请勿盗链”警告提示图片路径
                string errolImagePath = context.Request.PhysicalApplicationPath +"sa/four.jpg";
                //发送客户端
                context.Response.WriteFile(errolImagePath);

            }
            else
            {
                context.Response.WriteFile(context.Request.PhysicalPath);
            }

盗链的判断依据:上次请求的主题和端口与本次请求的主题和端口是否一致,若不一致,则为盗链。

2>配置相关配置文件:

 <system.webServer>
    <handlers>
      <add verb="*" path="images/*" type="test.Class1" name="sd"/>
    </handlers>
  </system.webServer>

注意:当浏览者访问一个页面时,页面的内容并非一次全部传送到客户端。如果请求的页面有许多图片或其他信息,那么最先响应的是这个页面的文本,然后通过客户端的浏览器对这段文本进行解释执行。如果发现其中有图片,那么客户端浏览器会再发送一条HTTP请求,当这个请求被处理后,该图片文件会被传送到客户端,浏览器会将图片插入到页面的正确位置,所以客户端可能要发送多条HTTP请求以后,才能够看到完整的页面。基于这样的机制,会产生盗链问题。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值