`
北极的。鱼
  • 浏览: 150700 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

【转】盗链问题

阅读更多

盗链 的危害我就不说了,网上有很多。

直接分析盗链原理 :看下面用httpwatch 截获的http发送的数据

GET /Img.ashx?img=svn_work.gif HTTP/1.1
Accept: */*
Referer: http://www.svnhost.cn/
Accept-Language: zh-cn
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; CIBA)
Host: www.svnhost.cn
Connection: Keep-Alive

该数据包表示请求http://www.svnhost.cn/Img.ashx?img=svn_work.gif 文件。我们可以看到Referer表示上一页请求页面地址,也就是文件来源。Host表示当前请求的主机地址。

下面是一个盗链的数据包

GET /Img.ashx?img=svn_work.gif HTTP/1.1
Accept: */*
Referer: http://745.cc/
Accept-Language: zh-cn
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; CIBA)
Host: www.svnhost.cn
Connection: Keep-Alive

我们可以看到,上面两个数据,表示对于同一个文件:http://www.svnhost.cn/Img.ashx?img=svn_work.gif 的请求过程,这里的不同就是Referer,也就是都是请求同一个文件,但是请求的来源是不同的。因此我们可以在程序里判断是否是来源于当前服务器,来判断是否是盗链。
明白原理以后,实现防盗链 就非常简单了。下面以图片防盗链 来实现一个演示。ASP.NET中添加一个img.ashx文件,然后后台代码如下:

using System;
using System.Collections;
using System.Data;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;

namespace GetImage
{
    /// <summary>
    /// $codebehindclassname$ 的摘要说明
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    public class Img : IHttpHandler
    {

        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "image/jpg";
            if (context.Request.UrlReferrer != null && context.Request.UrlReferrer.Host.Equals(context.Request.Url.Host, StringComparison.InvariantCultureIgnoreCase))
                context.Response.WriteFile(context.Server.MapPath("~/" + context.Request.QueryString["img"]));
            else
                context.Response.WriteFile(context.Server.MapPath("~/logo.gif"));
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}
 

表示如果来源不为空,并且来源的服务器和当前服务器一致,那就表示是正常访问,非盗链。正常访问文件内容。

否则就是盗链,返回网站LOGO。

你甚至可以做成随机返回正确的图片,随机返回错误图片,或者定时返回正确图片,定时返回错误图片。

然后就是图片的使用了,这时使用图片就不是直接<input type="image" src="svn_work.gif " />了,而是<input type="image" src="/Img.ashx?img=svn_work.gif " />,就是说通过img,ashx来读取图片。别人盗链的话要用下面代码:<input type="image" src="http://www.svnhost.cn/Img.ashx?img=svn_work.gif " />。

赶紧给自己的网站加上防盗链吧!

 

 —————————华丽的分割线———————————————————————————

 

public class Class1 : IHttpHandler
{
    bool IHttpHandler.IsReusable
    {
        get { return true; }
    }

    public void ProcessRequest(HttpContext context)
    {
        try
        {
            if (context.Request.UrlReferrer.Host == "localhost1")
            {
                context.Response.Expires = 0;//设置客户端缓冲中文件过期时间为0,即立即过期。
                context.Response.Clear();//清空服务器端为此会话开辟的输出缓存
                context.Response.ContentType = "jpg";
                context.Response.WriteFile(context.Request.PhysicalPath);//将请求文件写入到服务器端为此会话开辟的输出缓存中
                context.Response.End();//将服务器端为此会话开辟的输出缓存中的信息传送到客户端
            }
            else //如果不是本地引用,则属于盗链引用,返回给客户端错误的图片
            {
                context.Response.Expires = 0; //设置客户端缓冲中文件过期时间为0,即立即过期。
                context.Response.Clear();//清空服务器端为此会话开辟的输出缓存
                context.Response.ContentType = "jpg";//System.Security.Cryptography.Pkcs.ContentInfo.GetContentType("error.jpg"); //获得文件类型
                context.Response.WriteFile("error.jpg");//将特殊的报告错误的图片文件写入到服务器端为此会话开辟的输出缓存中
                context.Response.End();//将服务器端为此会话开辟的输出缓存中的信息传送到客户端
            }
        }
        catch (Exception)
        {
        }
    }
}
 
分享到:
评论

相关推荐

    图片防止盗链 转转kaka100

    NULL 博文链接:https://ygl-250712-163-com.iteye.com/blog/858068

    防止盗链(eg.jpg)的C#实现

    防止盗链的C#实现。以jpg为例. 直接打开网页上签入的图片,可以通过。但是直接访问的,就转到错误页。

    PHP防止图片盗用(盗链)的方法小结

    Apache服务器下防止图片盗链的办法 如果你的网站以图片为主,哪天发现月底没到流量就快用光了,那就可以利用图片转向,在不修改网页的前提下,把图片下载请求转向到其它空间(比如试用主机),临时过渡。 下面开始讲解...

    若界音乐盗链助手 v1.5

    若界音乐盗链助手支持多家音乐网站外链,此版本歌曲播放速度比之前的版本快几倍,歌曲地址比之前版本短几倍使用中如果有什么问题可以到我博客咨询~或者加QQ群~ ,转换后的地址支持贴到QQ空间(免开绿钻)、论坛等地方...

    php有效防止图片盗用、盗链的两种方法

    如今的互联网,采集网站非常多,很多网站都喜欢盗链/盗用别人网站的图片,这样不仅侵犯网权,还导致被盗链的网站消耗大量的流量,给服务器造成比较大的压力,本文章向大家介绍php如何防止图片盗用/盗链的两种方法,...

    Apache服务器下防止图片盗链的办法

    先解释一下图片防盗链和转向:  图片防盗链有什么用?  防止其它网站盗用你的图片,浪费你宝贵的流量。  图片转向有什么用?  如果你的网站以图片为主,哪天发现月底没到流量就快用光了,那就可以利用图片转向,在...

    CMP4播放器 456Vv后台系统个人版 20100619

    1,纠正高级盗链不能获取网址带汉字问题 2,新增歌曲地址失效检测功能 3,修正上传图片安全问题 20100411更新(升级版) 1,升级数据库 2,升级页面代码 3,升级盗链功能 4,升级支持更多参数设置 4,支持迅雷、快车...

    CMP4播放器 456Vv后台系统个人版 20100416

    1,纠正高级盗链不能获取网址带汉字问题 2,新增歌曲地址失效检测功能 3,修正上传图片安全问题 20100411更新(升级版) 1,升级数据库 2,升级页面代码 3,升级盗链功能 4,升级支持更多参数设置 4,支持迅雷、快车...

    C#防盗链下载 实例

    通过设置web.config中的域名即可控制哪些域名是允许的,设置是否直接下载、是否允许盗链 &lt;!--是否直接下载--&gt; &lt;!--是否允许盗链--&gt; &lt;!--多个允许的访问来源用半角的","分割--&gt; &lt;!--默认转向的页面--&gt;

    CMP4播放器 456Vv后台系统个人版 20100426

    1,纠正高级盗链不能获取网址带汉字问题 2,新增歌曲地址失效检测功能 3,修正上传图片安全问题 20100411更新(升级版) 1,升级数据库 2,升级页面代码 3,升级盗链功能 4,升级支持更多参数设置 4,支持迅雷、快车...

    CMP4播放器 456Vv后台系统个人版 20100509

    1,纠正高级盗链不能获取网址带汉字问题 2,新增歌曲地址失效检测功能 3,修正上传图片安全问题 20100411更新(升级版) 1,升级数据库 2,升级页面代码 3,升级盗链功能 4,升级支持更多参数设置 4,支持迅雷、快车...

    Apache下htaccess的配置使用详解(转)

    Apache下htaccess的配置使用详解,自定义错误页面、禁止目录被浏览、地址重定向、目录保护、改变默认首页索引、防止网站图片盗链

    CMP4播放器 456Vv后台系统个人版 20100515

    1,纠正高级盗链不能获取网址带汉字问题 2,新增歌曲地址失效检测功能 3,修正上传图片安全问题 20100411更新(升级版) 1,升级数据库 2,升级页面代码 3,升级盗链功能 4,升级支持更多参数设置 4,支持迅雷、快车...

    CMP4播放器 456Vv后台系统个人版 20100530

    1,纠正高级盗链不能获取网址带汉字问题 2,新增歌曲地址失效检测功能 3,修正上传图片安全问题 20100411更新(升级版) 1,升级数据库 2,升级页面代码 3,升级盗链功能 4,升级支持更多参数设置 4,支持迅雷、快车...

    CMP4播放器 456Vv后台系统个人版 20100605

    1,纠正高级盗链不能获取网址带汉字问题 2,新增歌曲地址失效检测功能 3,修正上传图片安全问题 20100411更新(升级版) 1,升级数据库 2,升级页面代码 3,升级盗链功能 4,升级支持更多参数设置 4,支持迅雷、快车...

    拓网长微博系统 v1.0.rar

    拓网长微博系统,由拓网科技全球首创的新型网站模式,是一款在线将文章转换图片的系统,专为超过140字的长微博设计的文字转图片工具。转换后的图片中文字清晰,可支持几万字,而且可以自定义底部签名及背景图片。整...

    CMP4播放器 456Vv后台系统个人版 20100613

    1,纠正高级盗链不能获取网址带汉字问题 2,新增歌曲地址失效检测功能 3,修正上传图片安全问题 20100411更新(升级版) 1,升级数据库 2,升级页面代码 3,升级盗链功能 4,升级支持更多参数设置 4,支持迅雷、快车...

    CMP4播放器 456Vv后台系统个人版 20100616

    1,纠正高级盗链不能获取网址带汉字问题 2,新增歌曲地址失效检测功能 3,修正上传图片安全问题 20100411更新(升级版) 1,升级数据库 2,升级页面代码 3,升级盗链功能 4,升级支持更多参数设置 4,支持迅雷、快车...

    红货源网站源码整站下载 网店货源代理加盟网程序 货源吧改版源码

    后来去除了网站中盗链,因而买家可以放心,当然本站中也没有我的盗链。 为方便搜索引擎及外链,本站全部广告部分都调用了js实现,从而达到去除无用外链 在调用js广告部分如果出现图片不能正确显示的 只需将src=...

Global site tag (gtag.js) - Google Analytics