`

网站盗链和网站防盗链

 
阅读更多

什么是盗链

“盗链”的定义是:此内容不在自己服务器上,而通过技术手段,绕过别人放广告有利益的最终页,直接在自己的有广告有利益的页面上向最终用户提供此内容。 常常是一些名不见经传的小网站来盗取一些有实力的大网站的地址(比如一些音乐、图片、软件的下载地址)然后放置在自己的网站中,通过这种方法盗取大网站的空间和流量。

 

 

为什么会产生盗链

一般浏览有一个重要的现象就是一个完整的页面并不是一次全部传送到客户端的。如果请求的是一个带有许多图片和其它信息的页面,那么最先的一个Http请求被传送回来的是这个页面的文本,然后通过客户端的浏览器对这段文本的解释执行,发现其中还有图片,那么客户端的浏览器会再发送一条Http请求,当这个请求被处理后那么这个图片文件会被传送到客户端,然后浏览器回将图片安放到页面的正确位置,就这样一个完整的页面也许要经过发送多条Http请求才能够被完整的显示。基于这样的机制,就会产生一个问题,那就是盗链问题:就是一个网站中如果没有起页面中所说的信息,例如图片信息,那么它完全可以将这个图片的连接到别的网站。这样没有任何资源的网站利用了别的网站的资源来展示给浏览者,提高了自己的访问量,而大部分浏览者又不会很容易地发现,这样显然,对于那个被利用了资源的网站是不公平的。一些不良网站为了不增加成本而扩充自己站点内容,经常盗用其他网站的链接。一方面损害了原网站的合法利益,另一方面又加重了服务器的负担。

---------------------------------------------------------------------------
代码实现

首先创建一个类继承于IHttpHandler,我这里就叫做ForbiddenInvaliteDownload类了:
代码
复制代码 代码如下:
public bool IsReusable
{
get { return true; }
}
public void ProcessRequest(HttpContext context)
{
if (null != context.Request.UrlReferrer)
{
context.Response.Expires = 0;
context.Response.Clear();
context.Response.ContentType = "image/jpg";
context.Response.WriteFile(context.Request.PhysicalPath);
context.Response.End();
}
else
{
context.Response.Expires = 0;
context.Response.Clear();
context.Response.ContentType = "text/html";
context.Response.Write("盗链");
context.Response.End();
}
}

代码很少,大家一看就明白了。就是用context.Request.UrlReferrer这个判断一下前面一个请求是否存在,存在则认为是合法的,否则不合法。
仅仅是这个类还不能将所有的jpg请求转发过来,我们需要配置一下webconfig,在System.Web下配置:
代码
复制代码 代码如下:
<httpHandlers>
<add verb="*" path="*.jpg" type="Namespace.ForbiddenInvaliteDownload,Namespace"/>
</httpHandlers>

这里还要提到的是IIS默认是不会为JPG文件发送请求的,而是直接获取。所以我们还要在iis里面配置一下让所有的jpg请求都转发到我们的那个处理程序,而不是iis默认的直接获得。配置如图:

 


至此,你的网站已经可以防止jpg文件被盗了。当然,其他的zip等等文件同样也可以实现,您可以处理一个通用类,根据请求的后缀判断是什么类型从而进行操作。下面是效果图:

 


结束了吗
上面的方式并不能防止迅雷等下载软件的下载,在迅雷里面输入这些地址照样可以下载。如果别的站引用了你的某个.zip的文件链接,这样还是可以直接下载到的。那该如何解决呢?我目前想到的就是加入session验证。
如果用户访问了你的下载页面则在load里面设置session[“visited”]=”true”,然后在下载里面增加一个session验证,代码如下(注意,需要继承
System.Web.SessionState.IRequiresSessionState才能使用session):
代码


复制代码 代码如下:
if (null != context.Request.UrlReferrer && context.Session["visited"] == "true")
{
context.Response.Expires = 0;
context.Response.Clear();
context.Response.ContentType = "image/jpg";
context.Response.WriteFile(context.Request.PhysicalPath);
context.Response.End();
}
else
{
context.Response.Expires = 0;
context.Response.Clear();
context.Response.ContentType = "image/jpg";
context.Response.WriteFile(context.Request.PhysicalApplicationPath + "Images/2.jpg");
context.Response.End();
}

这样我们调试的时候调用迅雷下载这个图片就可以发现session里面是没有值的,当然就下载error图片了
详细出处参考:http://www.jb51.net/article/26174.htm

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    java 防盗链详解及解决办法

    java 防盗链详解及解决办法 Java 防盗链的概念 ...防盗链是非常重要的,因为它可以保护原网站的内容和空间,防止不道德的盗链行为。同时,我们也可以通过设置防盗链机制来保护自己的网站,避免受到他人的盗链攻击。

    网站防盗链(IIS7.0与IIS7.5配置防盗链)

    总结来说,IIS7.0和7.5的防盗链配置主要涉及URL重写和URL筛选,通过设置适当的规则和条件,可以有效地保护你的网站资源不被其他站点非法引用。正确配置后,你可以确保只有来自允许的源的请求才能访问到你的服务器...

    ASP.NET网站防盗链代码

    ASP.NET网站防盗链技术是为了防止网站上的资源,如图片、视频、音频或文件等,被其他网站未经许可直接引用,从而导致流量损失和版权问题。本文将深入探讨如何实现ASP.NET中的防盗链代码,以及其背后的原理。 首先,...

    采集破解防盗链图片显示的方法

    在互联网上,图片防盗链是一种常见的保护措施,用于防止他人未经许可直接引用网站上的图片资源。这导致了图片采集过程中可能会遇到图片无法显示的问题。本文将深入探讨如何使用PHP来破解防盗链,以便在采集图片时能...

    RealServer防盗链插件(UUReal防盗链)

    因此,RealServer防盗链插件的出现,旨在阻止非授权访问,保护服务器资源,维护网站正常运营。 二、UUReal防盗链简介 UUReal防盗链插件是专为RealServer设计的一款高效防盗链工具,其核心功能是通过检查请求来源,...

    三招两式 解决图片盗链无法查看问题

    图片盗链是互联网内容分享过程中经常遇到的一个问题,尤其是当原网站启用了防盗链机制时,未经允许的图片链接将无法正常显示。下面详细分析该问题的解决方案,并提供在不同浏览器中浏览盗链图片的方法。 首先,了解...

    纵横IIS防盗链嗅探狗

    通过安装和配置【纵横IIS防盗链嗅探狗】,网站管理员可以有效保护自己的服务器资源,减少带宽消耗,提高网站的运行效率。同时,这款工具的易用性和灵活性使其成为IIS服务器管理者的得力助手。在实际使用过程中,用户...

    IIS防盗链,示例文件

    对于音乐网站,防盗链尤为重要,因为音频文件通常较大,如果被其他网站直接引用,可能导致大量带宽流失。IIS可以通过设置URL筛选规则,只允许特定域名下的请求访问音乐文件,或者限制非登录用户的下载速度。 3. **...

    IIS 防盗链插件(UUIIS防盗链) 精简免费版

    【IIS防盗链插件(UUIIS防盗链)精简免费版】是一款专为IIS(Internet Information Services)设计的安全防护工具,主要用于防止非法用户通过盗链方式获取和播放服务器上的视频或者其他受保护的资源。它采用了独特的...

    WBAL防盗链工具 v0.1

    WBAL防盗链工具的源码是学习ASP.NET编程和网站安全防护的好材料。通过阅读和分析源码,开发者可以了解如何在实际项目中实现防盗链功能,提升自己的编程技能和网络安全意识。 总之,《WBAL防盗链工具 v0.1》是针对...

    网站防盗链软件

    在实际应用中,应根据网站的具体需求和资源类型调整防盗链策略。例如,对于高价值的视频资源,可能需要采取更严格的Token验证;而对于普通图片,Referer检查可能就足够了。同时,定期分析访问日志,了解防盗链效果,...

    Nginx配置防盗链的完整步骤

    然而,需要注意的是,防盗链并不能完全防止所有的盗链行为,因为有些高级的攻击者可能会通过伪造`Referer`头来绕过防护。因此,结合其他安全措施,如IP黑白名单、用户认证等,可以进一步提高资源的安全性。

    WBAL防盗链工具

    【WBAL防盗链工具】是一种基于ASP.Net技术开发的应用程序,其主要目的是保护网站的资源不被未经授权的第三方非法引用,防止流量盗用和资源滥用。在互联网上,特别是对于那些提供图片、视频或者下载服务的网站,防盗...

    网站防盗链保护伞 v1.2

    致力于彻底解决虚拟主机盗链问题开发的全国技术领先的软件,主要针对的对象是:电影网站、音乐网站、文件下载网站等站长、ICP内容提供商、虚拟主机提供商等有需要的用户主要功能列表:1、支持中文文件名的防盗链保护...

    论文研究-论文网站防盗链策略与信息分级的研究 .pdf

    在论文网站防盗链策略的研究中,通常会考虑主动防盗链和被动防盗链两种方案。主动防盗链策略,也称为源验证策略,要求请求者在访问资源时提供某种凭证或进行某种验证,以确保请求是合法的。被动防盗链策略,也称为...

    Java防盗链在报表中的应用实例

    防盗链技术是一种旨在防止网站上的资源被未经授权的方式获取和传播的技术。在Web开发中,常见的资源包括图片、视频、PDF文档以及报表等,它们都可能成为被盗链的目标。盗链的主要手段是通过一个页面链接到另外一个...

    盗链是视频行业的绝症么?—Android_APP视频防盗链的N种姿势.pdf

    同时,考虑到兼容性问题,这些防盗链策略需要支持多种处理器体系和广泛的Android系统版本,以确保用户体验不受影响。通过这些措施,视频行业可以更好地应对盗链挑战,降低运营成本,维护健康的市场环境。

    微信防盗链JavaScript

    微信图片防盗链问题源于微信对自身内容保护的措施,它限制了外部网站直接引用微信服务器上的图片资源。当用户尝试在非微信环境中分享或转载微信文章中的图片时,这些图片通常无法正常显示。为了解决这个问题,我们...

    呆呆防盗链扩展版 v1.4

    总的来说,呆呆防盗链扩展版 v1.4是一款实用且高效的服务器流量管理工具,它通过灵活的自定义规则和强大的外链检测功能,为网站运营者提供了有力的保护,确保服务器资源的合理利用,同时提升了站点的安全性。...

    Serv-u防盗链插件(UUFTP防盗链)

    然后把这个字符串作为登陆ftp的帐号密码进行下载,而且这个验证字符串只有用户登陆网站后才是有效的,因此即使该地址被人盗链,别人也是登陆不了ftp的,从而很好的达到了防盗链的功能。而且本插件最大的优势就是无须...

Global site tag (gtag.js) - Google Analytics