apache httpd 如何防盗链
1. 什么是盗链?
你在qq空间里上传发布了一张照片. 假设你的这些照片可以被所有人查看. 我在我的网站上使用你的图片, 那么我只需要获取你的图片的url 地址, 就可以了. 如果qq空间未作防盗链, 那么我在我的网站就可以盗链qq空间的图片了.
假设. http://www.whoistester.com/index.html 里 的html代码为
<html><body><img src=”qq网站上的某张图片url地址如 http://www.qq.com/a.png” alt=”” /> </body> </html>
如果qq网站未作防盗链, 那么打开www.whoistester.com/index.html后,可以显示qq网站上的图片.
qq网站做了防盗链以后, 打开www.whoistester.com/index.html 后, 图片无法显示了.
所以, 盗链主要是为了防止别的网站链接自己站点的图片资源(不仅包括图片)等资源, 主要是为了版权保护, 和流量减少.
2. 如何防盗链.
是利用了http协议的头 HTTP_REFERER . 当你http://www.whoistester.com/index.html 里链接了qq空间的图片, 那么访问qq的图片时,发的http头里的 HTTP_REFERER 会是 http://www.whoistester.com , 那么qq 空间的服务器, 发现http_refferer 不是qq空间自己的域名, 则做相应的处理,比如禁止访问或者跳转到其他页面等. 就实现了防盗链.
3. 那来介绍下apache httpd服务如何防盗链. 可以将配置放在httpd.conf 或者 .htaccess , 建议放在httpd.conf
1) 使用rewrite
原理: 判断访问的http_refferer 是否匹配我的网站域名,如果不匹配,则跳转到我自定义的一个页面(例如禁止页面, 或者“提示不存在的其他一个页面或者图片”)。
RewriteEngine On RewriteCond %{HTTP_REFERER} !^http://www.whoistester.com/.*$ [NC] RewriteCond %{HTTP_REFERER} !^http://www.whoistester.com$ [NC] RewriteCond %{HTTP_REFERER} !^http://www.whoistester.com/.*$ [NC] RewriteCond %{HTTP_REFERER} !^http://www.whoistester.com$ [NC] RewriteRule .*\.(gif|jpg|swf)$ http://www.whoistester.com/errorlink.png [R,NC]
2)使用SetEnvIfNoCase 和 FilesMatch
SetEnvIfNoCase Referer "^https?://([^/]*)?whoistester\.com/" local_ref=1 SetEnvIf Referer ^$ local_ref=1 <FilesMatch "\.(jpe?g|gif|png)$"> Order Allow,Deny Allow from env=local_ref </FilesMatch>
此篇文章已被阅读2364 次