盗链,可耻啊

         最近发现一直在维护的行业网站,突然在百度的排名下降了很多,甚至前几页都找不到,而且流量也没以前多了,服务器经常假死,网站出现打不开的情况,经过排查,才发现,原来网站被别人用框架盗链了,汗!

        所谓的盗链就是服务提供商自己不提供服务的内容,通过技术手段绕过其它有利益的最终用户界面(如广告),直接在自己的网站上向最终用户提供其它服务提供商的服务内容,骗取最终用户的浏览和点击率。受益者不提供资源或提供很少的资源,而真正的服务提供商却得不到任何的收益。
通俗的说就是把别人的网站上资源直接链接到自己的网站上使用,这些资源还是在别人的服务器里,并没有放到自己的服务器里,只是做个链接链到自己的网站上,举个例子,如果是自己网站使用自己服务器里的资源,比如是图片,那么代码应该这样写:<img src="images/pic.jpg" />,然而如果是盗链,比如盗链http://www.abc.com/里的图片,代码就会这样写<img src="http://www.abc.com/image/pic.jpg" />,所以可以看出,被盗网站的数据量访问大了,可是网站访问量少了,占用了被盗网站的宽带量,导致网站瘫痪,不能正常访问常见的盗链有图片盗链、音频盗链、视频盗链、文件盗链。 还有一种就是整站被盗链,使用iframe框架将网站域名链接上去,别人打开的时候就直接打开盗链的网站

     

既然找到了原因,也就相应的找到了解决了办法,既然是被盗链,那来源一定不是正确,所以主要判断域名和服务器即可

    下面就来简单看看如何防止网站的背部资源被盗链,就是图片了,视频了等,可以在httphandler中作相应的判断

   

View Code
using System.Web;
using System;
public class Handler : IHttpHandler
{

    public void ProcessRequest(HttpContext context)
    {
        //判断是否是本地引用,如果是则返回给客户端正确的图片
        
//这里的判断就是用到了http请求中所记录的页信息
        
//如果是网站,可将“localhost”修改为网站地址
        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 + "error.jpg");
            //将输出缓存中的信息传送到客户端
            context.Response.End();
        }
    }
    public bool IsReusable
    {
        get
        {
            return true;
        }
    }

web.config

<add verb="*" path="*.jpg" type="Handler"/>

有一点要说一下,图片加水印,虽然也是防止图片被别的网站盗用,但是两者有本质的区别...

不同的盗链可以采用不同的方法解决

 
原文地址:https://www.cnblogs.com/shuang121/p/2635554.html