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

  • 相关阅读:
    General Problem Solving Techniques [Beginner-1]~H
    做HDU1010 带出来一个小问题
    HDU1009
    hdu1007
    hdu 1008
    HDU1006
    hdu 1005
    hdu 1004
    UVA 10970 第一次比赛 D题 (后面才补的)
    LightOJ 1317 第八次比赛 A 题
  • 原文地址:https://www.cnblogs.com/jbdxbl/p/9348495.html
Copyright © 2011-2022 走看看