zoukankan      html  css  js  c++  java
  • ASP.NET之图片防盗链的实现

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

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


      首先,添加个httpHandlers请求,WEBCONFIG部分配置节如下:
           <httpHandlers>
          <add verb="*" path="*.jpg" type="myhandler,App_Code"/>
        </httpHandlers> 注意:对应于system.web之下,别添错了哦!
    然后添加个class,取名为myhandler继承于IHttpHandler

    class原型如下:
    using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    public class myhandler : IHttpHandler
    {
        public void ProcessRequest(HttpContext context)
        {
            string FileName = context.Server.MapPath(context.Request.FilePath);
            if (context.Request.UrlReferrer.Host == null)
            {
                context.Response.ContentType = "image/JPEG";
                context.Response.WriteFile("~/images/no.png");//被替换图片
            }
            else
            {
                if (context.Request.UrlReferrer.Host.IndexOf("localhost") > -1)//这里是你的域名
                {
                    context.Response.ContentType = "image/JPEG";
                    context.Response.WriteFile(FileName);
                }
                else
                {
                    context.Response.ContentType = "image/JPEG";
                    context.Response.WriteFile("~/images/no.png");
                }
            }
        }

        public bool IsReusable
        {
            get { return true; }
        }

        public myhandler()
        {

        }
    }

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

    次方法也可应用于URL伪静态,上一篇文章 ASP.NET之URL静态化
    http://www.cnblogs.com/qingseyuandi/archive/2010/01/14/1647857.html#1747257

    ===============

    下一次聊下图片与ASP.NET程序的服务器分离,欢迎大家光临我的博客。

  • 相关阅读:
    oc kvc的模式:匹配搜索模式(模式匹配)、装包解包
    编程语言的多态与动态
    swift的@objc总结
    swift函数的调用约定
    PHP实现微信退款的分析与源码实现
    【MySQL】20个经典面试题,全部答对月薪10k+
    redis面试题总结
    【Redis缓存机制】1.Redis介绍和使用场景
    php四种文件加载语句
    做网站-mysql表字段设计
  • 原文地址:https://www.cnblogs.com/qingseyuandi/p/1648273.html
Copyright © 2011-2022 走看看