【IHttpHandler】使用IHttpHandler防盗链

     防盗链的原理,从图片请求的URL地址上判断是否是我们自己网站上的域名,如果不是,恭喜,你的图片已经被盗链了!

   那么我来介绍下图片放盗链的一个方法

  首先,添加个httpHandlers请求,webconfig部分配置节如下:

     <httpHandlers>
          <add verb="*" path="*.jpg" type="myhandler,App_Code"/>
    </httpHandlers>

然后添加个class,取名为myhandler继承于IHttpHandler

隐藏行号 复制代码 防盗链
  1. using System;
    
  2. using System.Data;
    
  3. using System.Configuration;
    
  4. using System.Web;
    
  5. using System.Web.Security;
    
  6. using System.Web.UI;
    
  7. using System.Web.UI.WebControls;
    
  8. using System.Web.UI.WebControls.WebParts;
    
  9. using System.Web.UI.HtmlControls;
    
  10. public class myhandler : IHttpHandler
    
  11. {
    
  12.     public void ProcessRequest(HttpContext context)
    
  13.     {
    
  14.         string FileName = context.Server.MapPath(context.Request.FilePath);
    
  15.         if (context.Request.UrlReferrer.Host == null)
    
  16.         {
    
  17.             context.Response.ContentType = "image/JPEG";
    
  18.             context.Response.WriteFile("~/images/no.png");//被替换图片
    
  19.         }
    
  20.         else
    
  21.         {
    
  22.             if (context.Request.UrlReferrer.Host.IndexOf("localhost") > -1)//这里是你的域名
    
  23.             {
    
  24.                 context.Response.ContentType = "image/JPEG";
    
  25.                 context.Response.WriteFile(FileName);
    
  26.             }
    
  27.             else
    
  28.             {
    
  29.                 context.Response.ContentType = "image/JPEG";
    
  30.                 context.Response.WriteFile("~/images/no.png");
    
  31.             }
    
  32.         }
    
  33.     }
    
  34. 
    
  35.     public bool IsReusable
    
  36.     {
    
  37.         get { return true; }
    
  38.     }
    
  39. 
    
  40.     public myhandler()
    
  41.     {
    
  42. 
    
  43.     }
    
  44. }
    
  45. 
    

myhandler继承自IHttpHandler实现了对url来源来判断jpg图片是否被盗链,本class中以localhost为例,修改localhost和images/no.png参数即可.

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。