注册 | 登陆

[PHP]Hotlink Protection功能,“防盗链”

    Hotlink Protection的原理是利用Apache的RewriteCond功能,在得到文件请求时检测请求REFERER,只有是本网站的URL才放行。这个原理很适合自制头像的保护,因为头像只应该在本网站内部使用。

    Discuz的内置头像保存在/forum/images/avatars/目录下,我只想保护这些内置头像,用户上传的头像和其他图片不去限制别人引用,因此RewriteCond代码放置在此目录即可::
-----------------------------------------------------
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://flyeon.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://flyeon.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.flyeon.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.flyeon.com$ [NC]
RewriteRule .*\.(jpg|jpeg|gif|png)$ http://www.flyeon.com/img/hp.gif [R,NC]
-----------------------------------------------------

    四个RewriteCond排除四种访问自己网站的方法,分别是不带www访问网站下某页面、不带www访问网站首页、带www访问网站下某页面和带www访问网站首页。符合这四种情况外的HTTP_REFERER,并且文件以jpg或jpeg、gif、png结尾则转到http://www.flyeon.com/img/hp.gif文件处。

    把这个文件保存为.htaccess,上传到/forum/images/avatars/目录下即可。如想保护整个网站的图片则上传到根目录;如想保护其他格式的文件则直接在RewriteRule中添加扩展名。

    顺便说一句:这种方法有一定的局限性,比如某些下载工具可以发送自定的“引用”值;此外有些用户安装的防火墙、杀毒软件会阻止浏览器发送HTTP_REFERER值给服务器,因此他们正常浏览会受影响。真不知道这类防火墙软件厂商是怎么想的,因为这最多只涉及隐私(而且主要是HTTP_REFERER网站的隐私,跟访问者没什么关系),而网络安全无关。

本文来自:Concorde

Tags: php

« 上一篇 | 下一篇 »

只显示10条记录相关文章

Php彩蛋:输入后缀看图片! (浏览: 974, 评论: 0)
Php彩蛋:输入后缀看图片! (浏览: 1966, 评论: 0)

Trackbacks

点击获得Trackback地址,Encode: UTF-8

发表评论

评论内容 (必填):