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

  • 相关阅读:
    mac 10.15.7 修改PATH
    oc 属性类型一般用法
    ubuntu解压zip文件名乱码
    telnet 退出
    docker 根据容器创建镜像
    mac android adb device 没有显示设备
    Yii2 查看所有的别名 alias
    Yii2 App Advanced 添加 .gitignore
    ubuntu 18.04 搜狗突然就提示乱码
    An error occured while deploying the file. This probably means that the app contains ARM native code and your Genymotion device cannot run ARM instructions. You should either build your native code to
  • 原文地址:https://www.cnblogs.com/qingseyuandi/p/1648273.html
Copyright © 2011-2022 走看看