Apache 实现禁止图片盗链
时间:2006-02-10 来源:f980215
1、假设充许连结图片的主机域名为:www.test.com
2、修改httpd.conf
SetEnvIfNoCase Referer "^http://www.test.com/" local_ref=1
<FilesMatch ".(gif|jpg)">
Order Allow,Deny
Allow from env=local_ref
</FilesMatch>
修改还可以防止任意文件盗链下载的问题。
使用以上的方法当从非指定的主机连结图片时,图片将无法显示,如果希望显示一张“禁止盗链”的图片,我们可以用mod_rewrite 来实现。
首先在安装 apache 时要加上 --enable-rewrite 参数加载 mod_rewrite 模组。
假设“禁止盗链”的图片为abc.gif,我们在 httpd.conf 中可以这样配置:
RewriteEngine on
RewriteCond %{ HTTP_REFERER } !^$
RewriteCond %{ HTTP_REFERER } !^http://(www\.)?test.com /.*$ [NC]
RewriteRule \.(gif|jpg)$ http://www.test.com/abc.gif [R,L]
当主机的图片被盗链时,只会看到 abc.gif 这张“禁止盗链”的图片!
另:
######## Preventing Image 'Theft' ########
SetEnvIfNoCase Referer “^http://(.)+\.fjhr\.com/” local_ref=1
SetEnvIfNoCase Referer “^http://(.)+\.hzmjp\.com/” local_ref=1
SetEnvIfNoCase Referer “^http://(.)+\.dalouis\.com/” local_ref=1
SetEnvIfNoCase Referer “^http://(.)+\.necktie\.gov\.cn/” local_ref=1
SetEnvIfNoCase Referer “^http://(.)+\.necktie\.net\.cn/” local_ref=1
SetEnvIfNoCase Referer “-” local_ref=1
######## Allow the LOGO image Theft ##########
SetEnvIf Request_URI “/images/logo(.)+” local_ref=0
<FilesMatch “\.(png|gif|jpg)”>
Order Allow,Deny
Allow from env=local_ref
</FilesMatch>
参考文档:
Preventing Image 'Theft' By: Ken Coar
Preventing hot linking of images by JavaScript Kit
SetEnvIfNoCase 和 SetEnvIf 的说明文档
http://httpd.apache.org/docs-2.0/mod/mod_setenvif.html#setenvif