系统管理 维护监控 简单生活
利用apache的防盗链
方法一:判断http请求中的HTTP_REFERER值
通过判断http请求中的HTTP_REFERER值,然后再用apache的 rewrite功能
转载自:http://www.cbmland.com/post/562/lock-images-and-downloads.html
修改.htaccess文件,加入如下
RewriteCond %{HTTP_REFERER} !^http://(.*\.)?webjx.com(/.*)?$ [NC]
RewriteRule \.(jpg|gif|png|bmp)$ http://www.webjx.com/images/403.jpeg [R=301,L,NC]
这段的意思是,判断http请求中的HTTP_REFERER值,是否为来自webjx.com的请求(白名单机制),如果不是,则再判断请求的后缀是否为常见的四种图片格式,如果是,则用http重定向的方式转到定制好的提示图片。
这样,盗链者的网站上如果是引用的是你网站上的图片,就会因为不符合白名单,图片都会被显示成重定向的内容。而这些内容可以是你来精心定制的内容。
同样的道理来防止下载资源被盗链。
RewriteCond %{HTTP_REFERER} !^http://(.*\.)?webjx.com/.*$ [NC]
RewriteRule (download/[0-9]+/.*$|\.(rar|zip|exe|chm|torrent)$) http://www.webjx.com/ [R=301,L,NC]
判断HTTP_REFERER是否来至webjx.com,否则请求的rar|zip|exe|chm|torrent 类型文件下载会被转向到主页。
方法二 用了SetEnvIf来做
转载自:http://blog.ligj.eol.cn/478
SetEnvIfNoCase Referer "^^http://.*\.eol\.cn/.*" local_ref=1
SetEnvIfNoCase Referer "^http://www\.edu.cn/.*" local_ref=1
SetEnvIfNoCase Referer "^http://free\.eol\.cn/.*" local_ref=1
SetEnvIfNoCase Referer "^http://.*\.media.edu.cn/.*" local_ref=1
<FilesMatch "\.(mp3|rm|zip|rar|iso|mpg|pdf)">
Order Allow,Deny
Allow from env=local_ref
</FilesMatch>
但是有人反映bbs.eol.cn上的一些帖子上的mp3不能直接播放,我打开页面看到确实是这样的。
查看日志发现bbs.eol.cn来的请求就是403错误。肯定是防盗链没做好。
在网上找来找去,说的方法都是一样的,所以就一时没了门。
后来按同事给我的防止flashget下载的一个帖子那里得到启发,对browser做控制。
BrowserMatch "RealPlayer" local_media=0
BrowserMatch "MediaPlayer" local_media=0
Allow from env=local_media但是还是不行,老觉得local_media应该是1,改过来,还是不行。
我就存下院文件看看,发现<object中id是NSPlayer,就想着是不是这里不对
就又加一条 BrowserMatch "NsPlayer" local_media=1还是不行,后来配合日志发现大小写不一致,于是改成
BrowserMatch "NSPlayer" local_media=1
形成下边的策略,问题搞定!呵呵:>不容易!
SetEnvIfNoCase Referer "^http://(.)+\.eol\.cn/" local_ref=1
# SetEnvIfNoCase Referer "^http://*.eol.cn/" local_ref=1
SetEnvIfNoCase Referer "^http://bbs\.eol\.cn/" local_ref=1
SetEnvIfNoCase Referer "^http://www\.edu.cn/.*" local_ref=1
SetEnvIfNoCase Referer "^http://free\.eol\.cn/.*" local_ref=1
SetEnvIfNoCase Referer "^http://.*\.media.edu.cn/.*" local_ref=1
SetEnvIfNoCase Referer "^http://219\.224\.99\.254/" local_ref=1
BrowserMatch "RealPlayer" local_media=1
BrowserMatch "MediaPlayer" local_media=1
BrowserMatch "NSPlayer" local_media=1
<FilesMatch "\.(mp3|rm|zip|rar|iso|mpg|pdf)">
Order Allow,Deny
Allow from env=local_ref
Allow from env=local_media
</FilesMatch>
| 打印文章 | 这篇文章由admin于2009年08月26日 4:29 下午发表在wordpress。你可以订阅RSS 2.0 也可以发表评论或引用到你的网站。 |