2012年12月29日星期六

防止图片盗链

    所谓盗链是指服务提供商自己不提供服务的内容,而是通过技术手段直接在自己的网站上向最终用户提供其他服务商的服务内容,以骗取用户的浏览和点击率。受益者不提供资源或提供很少的资源,而真正的服务提供商却得不到任何的收益。像图片、视频等这些比较大的文件都有可能成为被盗的对象。一旦文件被盗,就会增加服务器的流量,影响网站的访问速度。虽然我们不能100%的保护这些文件不被别人盗用,但可以通过 HTTP Referer 进行限制。使用 Apache 可以很方便地进行设置。假设主机域名为 www.example.com,在文件 .htaccess 中的配置如下:
 
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$ [NC]
RewriteCond %{HTTP_REFERER} ! http://www.example.com [NC]
RewriteCond %{HTTP_REFERER} ! http://www.google.cn [NC]
RewriteCond %{HTTP_REFERER} ! http://www.baidu.com [NC]
RewriteRule .*\.(gif|jpg)$ http://www.example.com/default.jpg [R,NC,L]

    该配置说明说下:

  •     RewriteCond %{HTTP_REFERER} !^$ [NC]
    允许 HTTP_REFERER 为空时访问,即允许用户在浏览器地址栏中直接输入图片地址时显示图片。一般来说这个选项是可选的,建议这样设置。如果将 HTTP_REFERER 强制限制不能为空,那么当用户通过代理服务器访问时,可能会导致一些问题。

  •     RewriteCond %{HTTP_REFERER} ! http://www.example.com [NC]
    设置允许访问的 HTTP_REFERER 来源,包括自身站点,以及 Baidu、Google、Yahoo!等

  • RewriteRule .*\.(gif|jpg)$ http://www.example.com/default.jpg [R,NC,L]
    设置图片被盗链时用于替换的图片,如果有图片被盗链,显示的是 default.jpg。注意,默认图片所在的路径最好跟配置文件不在同一目录下,图片越小越好。如果不想设置替换图片,可以使用下面的语句:

RewriteRule .*\.(gif|jpg)$ - [F]

NC、R、L、F 标记解释

NC:不区分大小写
R: 强制重定向
L:立即停止重写操作
F:强制禁止URL

没有评论:

发表评论