• 盗链,可耻啊


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

            所谓的盗链就是服务提供商自己不提供服务的内容,通过技术手段绕过其它有利益的最终用户界面(如广告),直接在自己的网站上向最终用户提供其它服务提供商的服务内容,骗取最终用户的浏览和点击率。受益者不提供资源或提供很少的资源,而真正的服务提供商却得不到任何的收益。
    通俗的说就是把别人的网站上资源直接链接到自己的网站上使用,这些资源还是在别人的服务器里,并没有放到自己的服务器里,只是做个链接链到自己的网站上,举个例子,如果是自己网站使用自己服务器里的资源,比如是图片,那么代码应该这样写:<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"/>

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

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

     
  • 相关阅读:
    STL 源代码分析 算法 stl_algo.h -- includes
    Objective-c 算术函数和常量代表
    文件比较,文件夹比较-- vimdiff,beyond compare, compare suite, WinMerge,Kdiff3
    PHP+lghttpd + postgresql 环境搭建
    开源免费跨平台opengl opencv webgl gtk blender, opengl贴图程序
    expect 参数处理之一
    几款屏幕录制软件 ActivePresente
    gcc -D 传值给代码,默认值为1
    error: /usr/include/stdio.h: Permission denied 的一种情况分析
    linux内核编译环境配置
  • 原文地址:https://www.cnblogs.com/shuang121/p/2635554.html
Copyright © 2020-2023  润新知