zoukankan      html  css  js  c++  java
  • ASP.NET处理管道之防盗链

    盗链就是在用户向网站a请求网站资源时,网站a将网站资源的路径填写为b网站资源的地址,用户将直接看到网站a上显示着网站b的资源,从而造成盗链。

    要防止盗链,就要用到处理管道中的技术

    在相应的模块类中:

            void app_BeginRequest(object sender, EventArgs e)
            {
                HttpContext context = (sender as HttpApplication).Context;
                HttpRequest request = context.Request;
                string path = request.PhysicalPath;//拿到请求的物理地址
                Uri url=request.Url;
                Uri urlRefer=request.UrlReferrer;
                //从物理地址中对比是不是要请求的jpg文件,并且将自己的域名和端口号和请求的进行对比,确定时外部请求还是内部请求
                if (path.EndsWith(".jpg")&&(url.Host!=urlRefer.Host||url.Port!=urlRefer.Port ))
                {
                    (sender as HttpApplication).CompleteRequest();//直接结束请求
                }
            }

    也可以将其中结束请求的代母替换掉,替换成显示自己准备好的图片:

    首先要引入命名空间:using System.Drawing;

    将if那部分改成:

                if (path.EndsWith(".jpg")&&(url.Host!=urlRefer.Host||url.Port!=urlRefer.Port ))
                {
                    Image img=Image.FromFile(context.Server.MapPath("~/alert.png"));
                    img.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Png);
                }

    这样,对方盗用的图片将全部变成你自己准备好的alert.png

  • 相关阅读:
    【tarjan】BZOJ 1051:受欢迎的牛
    【递推】BZOJ 1088: [SCOI2005]扫雷Mine
    【计算几何】多边形
    【贪心】Bzoj 2457:[BeiJing2011]双端队列
    【单调栈】Bzoj 1012: 最大数maxnumber
    [洛谷P3584] POI2015 LAS
    [洛谷P4049] JSOI2007 合金
    [51nod1533] 一堆的堆
    [AGC018E] Sightseeing Plan
    [CF1065E] Side Transmutations
  • 原文地址:https://www.cnblogs.com/jbdxbl/p/9348495.html
Copyright © 2011-2022 走看看