• 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程序的服务器分离,欢迎大家光临我的博客。

  • 相关阅读:
    Source Maps简介
    JavaScript数据结构——图的实现
    JavaScript数据结构——树的实现
    JavaScript数据结构——字典和散列表的实现
    JavaScript数据结构——集合的实现与应用
    [转]通过设置nginx的client_max_body_size解决nginx+php上传大文件的问题
    安卓刷量技术揭秘
    【转】让Bootstrap 3兼容IE8浏览器
    [LINK]Python服务器开发一:python基础
    [LINK]用Python计算昨天、今天和明天的日期时间
  • 原文地址:https://www.cnblogs.com/qingseyuandi/p/1648273.html
Copyright © 2020-2023  润新知