|
图片防盗链的原理是什么
有的网站的图片无法外链,如163等。它的原理是什么,为何别的网站用URL调不出它的图片。防盗链原理: http标准协议中有专门的字段记录referer ,一来可以追溯上一个入站地址是什么,二来对于资源文件,可以跟踪到包含显示他的网页地址是什么。
因此所有防盗链方法都是基于这个Referer字段。一种是使用apache文件FileMatch限制,在httpd.conf中增加 ( 其实也可以将把下面的语句存成一个.htaccess文件),并放到你的网站的根目录(就是www/html目录),这样子别人就没有办法盗连你的东东了~~
SetEnvIfNoCase Referer "^http://yahoo.com/" local_ref=1
Order Allow,Deny Allow from env=local_ref Allow from 127.0.0.1
这种很方便禁止非允许访问URL引用各种资源文件。请大家注意,把第一句"^http://yahoo.com/"改为你的网站, 比如我的网站是: http://www.linji.cn 我应该这么写的 "^http://www.linji.cn/"
第二种是使用rewrite,需要增加apache的mode_rewrite,支持.htaccess文件目录权限限制,在虚拟主机根目录增加.htaccess文件,描述从定向,把非本地地址refer的图片文件都从定向到警告图片或者警告网页上。
首先要确认你的服务器或空间的服务器解译引擎为Apache2,还有支持.htaccess客户设置文件,如果你有自己的服务器就请先对./conf/httpd.conf 文件做以下修改,找到:#LoadModule rewrite_module odules/mod_rewrite.so 把前面的 # 给去丢 。找到等一个 AllowOverride None 改为 AllowOverride All 重启Apache2服务器。接下就是做一个 .htaccess 文件了,其 .htaccess 文件内容为 :
RewriteEngine on RewriteCond %{HTTP_REFERER} !^http://aaoo.net/.*$ [NC] RewriteCond %{HTTP_REFERER} !^http://aaoo.net$ [NC] RewriteCond %{HTTP_REFERER} !^http://www.aaoo.net/.*$ [NC] RewriteCond %{HTTP_REFERER} !^http://www.aaoo.net$ [NC] RewriteRule .*.(jpg|jpeg|gif|png|bmp|rar|zip|exe)$ http://down.yoyo.com.ru/err.html [R,NC]
其中有色的地方都是要改为你的: 红色:就是改为你提供下载页面的地址,也就是只有通过这个地址才可以下载你所提供的东东。 蓝色:就是要保护文件的扩展名(以|分开),也就是说以这些为扩展名的文件只有通过红色的地址才可以访问。 绿色:如果不是通过红色的地址访问蓝色这些为扩展名的文件时就回重定向到绿色地址上。
这个方法有个好处是,不同的虚拟主机用不同的描述定义。
接下就是怎么用 .htaccess 文件来实现防盗链了。 首先要在空间上建两个目录(当然目录名随你),一个为 web 另一个为 down , web 是用来放下载页面的(或下载程序),down 当然就是放你提供的东东的啦, 把 .htaccess 文件的红色部分改一下,改为http://你的域名/web。蓝色部分 改为你要保护文件的扩展名。绿色部分改为http://你的域名/web。改后保存 .htaccess 文件把它上传到 down 目录。
还有第三种:
我在解决plog禁止盗链的时候,发现个问题,也算个好方法。 plog把所有资源都自己管理起来,用resserver.php来动态显示,这样统一的入口方便添加权限操作。 同时造成上面2种方法无法使用,因为不再是apache直接访问资源文件,而是php通过文件读取。
因此只能在代码中做手脚:在读取资源文件输出之前,加如下判断代码 : $referer = $_SERVER['HTTP_REFERER']; $selfurl = $_SERVER['HTTP_HOST']; if(false == strpos($referer,$selfurl)) { echo '非法盗链!'; exit(1); }
这里有些偷懒,直接看引用地址中是否包含host地址,不过原理就是这样,判断referer是否是本站地址。
我们常常在下载的时候,也碰到盗链网站无法下载,报盗链的问题。要下载这类文件最简单的方法就是改referer
比方flashget中,网址下面的"引用"一栏中,直接填写下载地址就可以了。
图片防盗链应适可而止
最近这些站点好像集体抽风,纷纷用上了图片防盗链,结果遇到了图片就是一个傻乎乎的替代图片"你看的图片来自某某站"或者是"此图片仅限于...用户之间交流与沟通",遇到这样的心情大坏,有的时候我不依不饶的直接点开这个图片,可要是不刷新,还是看不到到底是什么内容。
如果是用户自己的图片文件,你凭什么说"图片仅限于...用户之间交流与沟通"? 图片防盗链这个功能,如果是小网站防止大网站盗图片用用还情有可原,对于那些直接给用户上传的图片打上水印的垃圾门户站,适可而止吧,别总让给读者设置阅读障碍,不就是少看一点你们的广告么? 干脆你别提供 RSS 不就成了? 一方面默认用户从其他网站复制图片过来,一方面又防止站内的图片被别人用,这什么事儿啊?
对于我个人来说,你不让我直接从 Blog 里看到你的图片,我干脆就不看你站点上的内容--不订阅你站点的内容不就成了么?
作者:admin | 文章来源:新疆二域设计 | 更新时间:2007-10-16 20:40:33
|