ASP.NET 防盗链的实现[HttpHandler]
有时我们需要防止其他网站直接引用我们系统中的图片,或下载文件链接。需要禁止盗链!在ASP.NET中可以方便的实现该功能!
做一个简单的盗链图片的示例,如下。新建立一个WebApplcation。新建立一个images文件夹,里面二张jpg图片,一张logo.jpg正常图片,一张用于提示非法盗链的图片Error.jpg图片。spring framework rce漏洞复现
页面default.aspx页面很简单。就一个图片如下
<form id="form1" runat="server">
    <div>
    <img src="images/logo.jpg" />
    </div>
    </form>
这里使用HttpHandler来处理盗链问题
新建立一个 一般处理程序 Handler1.ashx.代码及注释如下
public void ProcessRequest(HttpContext context)
        {
            //判断是否是本地网站引用图片,如果是则返回正确的图片
            if (context.Request.UrlReferrer.Host == "localhost")
            {
                //设置客户端缓冲时间过期时间为0,即立即过期
                context.Response.Expires = 0;
                //清空服务器端为此会话开启的输出缓存
                context.Response.Clear();
                //设置输出文件类型
                context.Response.ContentType = "image/jpg";
                //将请求文件写入到输出缓存中
                context.Response.WriteFile(context.Request.PhysicalPath);
                //将输出缓存中的信息传送到客户端
                context.Response.End();
            }
            //如果不是本地引用,则是盗链本站图片
            else
            {
                //设置客户端缓冲时间过期时间为0,即立即过期
                context.Response.Expires = 0;
                //清空服务器端为此会话开启的输出缓存
                context.Response.Clear();
                //设置输出文件类型
                context.Response.ContentType = "image/jpg";
                //将请求文件写入到输出缓存中
                context.Response.WriteFile(context.Request.PhysicalApplicationPath + "images/error.jpg");
                //将输出缓存中的信息传送到客户端
                context.Response.End();
            }
        }
        //该属性表示HTTP请求是否可以使用当前处理
        public bool IsReusable
        {
            get
            {
                return true;
            }
        }

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。