- 浏览: 189268 次
- 性别:
- 来自: 深圳
文章分类
最新评论
什么是盗链
“盗链”的定义是:此内容不在自己服务器上,而通过技术手段,绕过别人放广告有利益的最终页,直接在自己的有广告有利益的页面上向最终用户提供此内容。 常常是一些名不见经传的小网站来盗取一些有实力的大网站的地址(比如一些音乐、图片、软件的下载地址)然后放置在自己的网站中,通过这种方法盗取大网站的空间和流量。
为什么会产生盗链
一般浏览有一个重要的现象就是一个完整的页面并不是一次全部传送到客户端的。如果请求的是一个带有许多图片和其它信息的页面,那么最先的一个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
发表评论
文章已被作者锁定,不允许评论。
-
UMeditor
2015-01-07 16:50 429UMeditor,简称UM,是为满足广大门户网站对于简单发帖 ... -
lazyload异步加载图片
2014-12-24 15:18 534如果一个网页很长并且有很多图片的话,下载图片就需要很多时间 ... -
提升对ASP.NET网站性能和多并发的设计的讨论
2014-09-03 09:49 733对于如何提高应用程序 ... -
远程服务器返回错误: (500) 内部服务器错误 (解决方案)
2013-12-19 18:00 14176“/”应用程序中的服务器错误。 远程服务器返回错误: ... -
checbox,redio超强样式运用
2013-06-04 16:49 802<html xmlns="http://ww ... -
html页面获取参数加载数据,提高访问速度
2013-06-03 14:49 840如果你的网站很多数据是用jquery ajax获取的,那就没 ... -
网页链接到QQ
2012-12-05 18:59 785<a target="_blank" ... -
SWFupload 上传控件的使用的使用
2012-12-02 16:17 867-- 首先说个解决 ie兼容的标签 <meta ht ... -
id,name的小区别
2012-11-08 23:42 623很多时候,很多人喜欢只写id,不写name,不过这两个作用还是 ... -
table属性
2012-08-25 23:50 799表格的色彩 表元的背景色彩和背景图象<th bg ... -
fck所需文件
2012-08-07 23:16 715fck所需文件fck所需文件fck所需文件fck所需文件fck ... -
input的高级应用
2012-08-07 23:16 7491.取消按钮按下时的虚线框 在input里添加属 ... -
取汉字拼音首字母
2012-08-05 20:01 1972<html><head><met ... -
WSDL.exe生成WebService代理类
2012-08-05 19:52 1121WSDL.exe生成WebService代理类 C ... -
Server.UrlEncode、HttpUtility.UrlDecode的区别
2011-12-18 17:59 992在对URL进行编码时,该用哪一个?这两都使用上有什么区别吗?测 ... -
asp.net window open 一个页面第一次会进load 第二次打开怎么不进了
2011-12-10 09:11 1312asp.net window open 一个页面第一次会进lo ... -
计算百分比相关个人积累
2011-11-29 10:25 874js 四舍五入 //获取小数点后几位 v的要转 ... -
一个页面多个列表 要实现各自列表的全选不受影响
2011-11-25 17:46 1092这个肯定要js实现的嘛 ... -
无法加载协定为“tt.WeatherWebServiceSoap”的终结点配置部分,因为找到了该协定的多个终结点配置。请按名称指示首选的终结点配置部分。
2011-11-22 22:08 3825无法加载协定为“tt.WeatherWebServiceSoa ... -
一个天气预报的webservice
2011-11-21 20:45 1049http://www.webxml.com.cn/WebSer ...
相关推荐
java 防盗链详解及解决办法 Java 防盗链的概念 ...防盗链是非常重要的,因为它可以保护原网站的内容和空间,防止不道德的盗链行为。同时,我们也可以通过设置防盗链机制来保护自己的网站,避免受到他人的盗链攻击。
总结来说,IIS7.0和7.5的防盗链配置主要涉及URL重写和URL筛选,通过设置适当的规则和条件,可以有效地保护你的网站资源不被其他站点非法引用。正确配置后,你可以确保只有来自允许的源的请求才能访问到你的服务器...
ASP.NET网站防盗链技术是为了防止网站上的资源,如图片、视频、音频或文件等,被其他网站未经许可直接引用,从而导致流量损失和版权问题。本文将深入探讨如何实现ASP.NET中的防盗链代码,以及其背后的原理。 首先,...
在互联网上,图片防盗链是一种常见的保护措施,用于防止他人未经许可直接引用网站上的图片资源。这导致了图片采集过程中可能会遇到图片无法显示的问题。本文将深入探讨如何使用PHP来破解防盗链,以便在采集图片时能...
因此,RealServer防盗链插件的出现,旨在阻止非授权访问,保护服务器资源,维护网站正常运营。 二、UUReal防盗链简介 UUReal防盗链插件是专为RealServer设计的一款高效防盗链工具,其核心功能是通过检查请求来源,...
图片盗链是互联网内容分享过程中经常遇到的一个问题,尤其是当原网站启用了防盗链机制时,未经允许的图片链接将无法正常显示。下面详细分析该问题的解决方案,并提供在不同浏览器中浏览盗链图片的方法。 首先,了解...
通过安装和配置【纵横IIS防盗链嗅探狗】,网站管理员可以有效保护自己的服务器资源,减少带宽消耗,提高网站的运行效率。同时,这款工具的易用性和灵活性使其成为IIS服务器管理者的得力助手。在实际使用过程中,用户...
对于音乐网站,防盗链尤为重要,因为音频文件通常较大,如果被其他网站直接引用,可能导致大量带宽流失。IIS可以通过设置URL筛选规则,只允许特定域名下的请求访问音乐文件,或者限制非登录用户的下载速度。 3. **...
WBAL防盗链工具的源码是学习ASP.NET编程和网站安全防护的好材料。通过阅读和分析源码,开发者可以了解如何在实际项目中实现防盗链功能,提升自己的编程技能和网络安全意识。 总之,《WBAL防盗链工具 v0.1》是针对...
在实际应用中,应根据网站的具体需求和资源类型调整防盗链策略。例如,对于高价值的视频资源,可能需要采取更严格的Token验证;而对于普通图片,Referer检查可能就足够了。同时,定期分析访问日志,了解防盗链效果,...
【WBAL防盗链工具】是一种基于ASP.Net技术开发的应用程序,其主要目的是保护网站的资源不被未经授权的第三方非法引用,防止流量盗用和资源滥用。在互联网上,特别是对于那些提供图片、视频或者下载服务的网站,防盗...
致力于彻底解决虚拟主机盗链问题开发的全国技术领先的软件,主要针对的对象是:电影网站、音乐网站、文件下载网站等站长、ICP内容提供商、虚拟主机提供商等有需要的用户主要功能列表:1、支持中文文件名的防盗链保护...
在论文网站防盗链策略的研究中,通常会考虑主动防盗链和被动防盗链两种方案。主动防盗链策略,也称为源验证策略,要求请求者在访问资源时提供某种凭证或进行某种验证,以确保请求是合法的。被动防盗链策略,也称为...
防盗链技术是一种旨在防止网站上的资源被未经授权的方式获取和传播的技术。在Web开发中,常见的资源包括图片、视频、PDF文档以及报表等,它们都可能成为被盗链的目标。盗链的主要手段是通过一个页面链接到另外一个...
同时,考虑到兼容性问题,这些防盗链策略需要支持多种处理器体系和广泛的Android系统版本,以确保用户体验不受影响。通过这些措施,视频行业可以更好地应对盗链挑战,降低运营成本,维护健康的市场环境。
微信图片防盗链问题源于微信对自身内容保护的措施,它限制了外部网站直接引用微信服务器上的图片资源。当用户尝试在非微信环境中分享或转载微信文章中的图片时,这些图片通常无法正常显示。为了解决这个问题,我们...
总的来说,呆呆防盗链扩展版 v1.4是一款实用且高效的服务器流量管理工具,它通过灵活的自定义规则和强大的外链检测功能,为网站运营者提供了有力的保护,确保服务器资源的合理利用,同时提升了站点的安全性。...
然而,需要注意的是,防盗链并不能完全防止所有的盗链行为,因为有些高级的攻击者可能会通过伪造`Referer`头来绕过防护。因此,结合其他安全措施,如IP黑白名单、用户认证等,可以进一步提高资源的安全性。
然后把这个字符串作为登陆ftp的帐号密码进行下载,而且这个验证字符串只有用户登陆网站后才是有效的,因此即使该地址被人盗链,别人也是登陆不了ftp的,从而很好的达到了防盗链的功能。而且本插件最大的优势就是无须...
"防盗链filter"是一种常见的Java技术,用于防止网站的资源(如图片、视频、音频等)被其他未经授权的网站非法引用,即“盗链”。本篇文章将深入探讨Java防盗链filter的工作原理、实现方式以及其在实际应用中的重要性...