• ASP.NET 图片防盗链的实现原理分析


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

    那么我来介绍下图片放盗链的一个方法
    首先,添加个httpHandlers请求,WEBCONFIG部分配置节如下:
    <httpHandlers>
    <add verb="*" path="*.jpg" type="myhandler,WebApplication5"/>
    </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参数即可

  • 相关阅读:
    c++中string类中的函数
    二进制
    快速幂
    substring
    hdu 4678
    扩展欧几里得算法
    欧几里得算法
    Floyd_Warshall(任意两点之间的最短路)
    带结构体的优先队列
    php获得远程信息到本地使用的3个函数:file_get_contents和curl函数和stream_get_contents
  • 原文地址:https://www.cnblogs.com/zhuawang/p/2216008.html
Copyright © 2020-2023  润新知