?S8?ComputerEraNo.12008
反盗链技术研究
郑绍辉,周明天
(成都电子科技大学计算机学院,四川成都6“)()54)
摘要:最近几年互联网上流氓软件盛行,盗链现象日益猖獗,已经危及到许多网站的正常运行,文章提出了几种反盗链解决方案,同时讨论了如何处理反盗链技术和网站可用性的关系。
关键词:盗链(hot—linking);反盗链;搜索引擎优化(sE0);流氓软件(rascalso脚are);网站可用性(websiteusability)
O引言
盗链现象严重影响到了很多网站的正常运行已经是不争
的事实。而完全以盗链为主的网站或共享软件也屡见不鲜,完
全有理由把这类软件归结为流氓软件。
1什么是盗链
所渭盗链,是指服务提供商自己不提供服务的内容,而通
过技术手段,绕过其它有利益的最终用户界面(如广告),直接
在自己的界面上向最终用户提供其它服务提供商的服务内容,
从而骗取最终用户的浏览和点击率。受益者不提供资源或提供
很少的资源,而真正的服务提供商却不能得到任何的支付。
网站盗链大量消耗被盗链网站的带宽,而真正的点击率也
许会很小,严重损害了被盗链网站的利益。早期的盗链一般是
一些名不见经传的小网站盗取一些有实力的大网站的地址,盗
链的目标比较有针对性;现在,很多大型的网站也已经开始把
盗链的目光锁定在了整个互联网上,窃取整个互联网上的其它
机器的带宽。
常见的盗链有以下几种:图片盗链,音频盗链,视频盗链,
文件盗链。
2为什么存在盗链
一般要被浏览的页面并不是一次全部传送到客户端的。如
果客户请求的是一个带有许多图片和其它信息的页面,那么最
先的一个H1TrP清求被传送回来的是这个页面的HTML文本,
客户端浏览器对这段文本解释执行后,发现其中还有其它文
件,客户端浏览器会再发送一条或者更多H1TrP请求,当这些
请求被处理后其它文件才被传送到客户端,然后浏览器将这些
文件放到页面的正确位置。一个完整的页面要经过发送多条
HTTP请求才能够被完整地显示(如图1)。基于这样的机制,盗
链就成为可能,服务提供商完全可以在自己的页面中嵌入别人
的链接,显示在自己的页面上,以达到盗链的目的。
l用户请求uRL
Browse“2.返回HTML页
令HTTP
CIientL,SeIver3.H1ML页面中的各种uRL
√
\
4.返回文件
图l访问页面的过程
简单地说,盗链钻了HTTP协议的空子。
3盗链形式
根据盗链的形式的不同,可以简单地把盗链分成两类:常规盗链和分布式盗链。
(1)常规盗链
这种盗链比较初级,同时也比较常见,具有一定的针对性,只盗用某个或某些网站的链接。技术含量不高,实现也比较简单。只需要在自己的页面嵌入别人的链接即可。
(2)分布式盗链
分布式盗链是盗链的一种新的形式,系统设计复杂,难度相对较大。这种盗链一般不针对某一个网站,互联网上任何一台机器都可能成为盗链的对象。其原理如图2所示。
图2分布式盗链
服务提供商一般会在后台设置专门程序(spider)在Intemet上抓取有用的链接,然后存储到自己的数据库中。而对于最终用户的每次访问,都将其转化为对已有数据库的查询,被查洵到的uRL就是被盗链的对象。由于对文件的访问已经被浏览器屏蔽掉了,所以最终用户感觉不到所访问的链接是被盗取的链接。
4常见的反盗链技术
4.1不定期更名文件或者目录
不定期的更改文件或者目录的名称,是最原始的反盗链的方式,可以比较有效地防止盗连。这种方法—般工作量比较大。但是批量的文件改名是完全可以自动化的,而且也比较容易实现。
在文件的更名过程中,可能会有客户正在下载该文件,这样会导致正常的客户访问失败,尽管这个问题容易解决,但是也不能够忽视。
4.2限制引用页
这种防盗链原理是,服务器获取用户提交信息的网站地
万方数据
计算机时代2008年第l期?59-
址,然后和真正的服务端的地址相比较,如果一致则表明是站内提交,或者为自己信任的站点提交,否则视为盗链。
实现时可以使用HTTP_REFERERl和.htaccess文件(需要启用monRewrite),结合正则表达式去匹配用户的每一个访问请求。
对于每一个H1TrP请求,服务器都要查找.htaccess文件,增加了读取文件的次数,一定程度上降低了性能。另外,服务器打开这个功能,有比较多的限制。
4.3文件伪装
文件伪装是目前用得最多的一种反盗链技术,一般会结合服务器端动态脚本(PHP,JsP/AsP)。图3显示了一个终端用户请求文件a.zip的全过程。实际上用户请求的文件地址,只是一个经过伪装的脚本文件,这个脚本文件会对用户的请求作认证,一般会检查session,coo虹e或HnT,._REFERER作为判断是否为盗链的依据。而真实的文件实际隐藏在用户不能够访问的地方,只有用户通过验证以后才会返回给用户。
图3文件伪装
4.4加密认证
这种反盗链方式,先从客户端获取用户信息,然后根据这个信息和用户请求的文件名字一起加密成字符串(sessionID)作为身份验证。只有当认证成功以后,服务端才会把用户需要的文件传送给客户。
1.用户榻关数据
I文件名,’9地址等》&:s孟iID{
生成器i
/。,/~一……”∥
浏览器;‘誓?3-sessionIo4癣码厝的
‘、、。
文纷名
SeSslonIDi
…一’一…。j。i;囊囊磊交…堡曼墅。.。量sj琏匿蔓箨
解码镶潢
~…’…
图4加密uRL
一般我们会把加密的sessionID作为uRL参数的一部分传递给服务器,由于这个sessionID和用户的信息挂钩,所以别人就算是盗取了链接,该sessionID也无法通过身份认证,从而达到反盗链的目的。这种方式对于分布式盗链非常有效。
4.5其它方法
其它反盗链方式也有不少,这里只列出一个大概思想作为参考。
(1)IIs反盗链,利用IsAPI—Rewdte同,和3.2的方法类似,可作为windows下反盗链的一个解决方案。
(2)图片反盗链,在图片中加入水印,虽然盗链者可以达到目的,但是却也在为自己的网站做宣传。
5反盗链技术,搜索引擎优化和网站可用性
(1)杜绝盗链是不可能的,也没有必要。
反盗链的目的在于保护自己的服务器资源特别是网络带宽不被非法滥用,合理的反盗链机制能够让网站有效地远离不法网站的侵扰,让网站资源最大限度地为自己的用户服务,而不是不知不觉地为其他网站作贡献。同时,反盗链技术在发展,盗链技术也在进步,必须注意的是,任何防盗链机制都不是百分之百可靠。只要是公开的资源就有可能被盗链。
实际上,我们只会保护重要的文件,而多数文件没有必要反盗链。网站上的文件被相互引用是很正常的事情,没有必要针对网站上的所有文件采用反盗链技术。
(2)反盗链技术和搜索引擎优化。
反盗链技术不利于网站的推广。搜索引擎在索引页面时也会用到spider,由于反盗链技术的采用,搜索引擎的spider也会被拒之门外,这样就减少了网站被索引的页面。同时也会减少网站的外部链接,客户了解这个网站的渠道会愈来愈少,这和网站推广的原则背道而驰。合理地采用搜索引擎优化技术,可以把这方面的损失降低到最小。
(3)反盗链技术与网站可用性。
网站的反盗链技术,多数都是通过检查H1vrP_REFERER,cookie和session而实现,这会带来很多问题。在很多情况下这些值都为空,比如用户在浏览器地址栏中直接输入地址时,用户通过某些代理服务器访问时,通过收藏访问等,这些访问都是正常的访问请求,但是会被误认为是盗链。
从网站可用性角度看,采用反盗链技术,相当于提供商把自己的产品层层加锁,严格控制访问途经,这样也必然给正常的终端用户带来不便。网站采用反盗链技术是以牺牲网站的某些功能为代价的,必然导致网站的可用性降低。
6结束语
我们认为,应该在保护自己不受盗链网站的侵害与保证网站可用性之间寻得一个可以接受的平衡点,要把网站的可用性放在第一位;另一方面,不能把反盗链技术作为保护网站版权的手段。适当地采用反盗链技术,可以有效地保护自己,但同时也要保证网站的可用性。
参考文献:
【1】袁楷等.流媒体服务器防盗链系统【J】.企业技术开发f学术版),2007.26(1).
【2】ThomasScott,SmarterImageHo廿inl‘ingPrevention,ht七p:乃/al—iStapart.∞m/ar蛀cles/hotlinkng/
【3】ISAPI—Rewritedocument甜on,http://1^『u№岫pirewrite.com/docS/【4】刘宏艳等.基于ASP的图书信VOD系统防盗链技术的实现IJ】.五邑土学学报,2006.20(4).
潮万方数据