Luar's Flash Playground:反盜連與Browsers不同的HTTP Referer麻煩事
反盜連與Browsers不同的HTTP Referer麻煩事 (03-10-2009)
為了節約頻寬,很多Servers都會設置一些反盜連(Hotlink Protection)措施,通常通過檢查HTTP referer來決定連線是否來自自己的Domain,這些措施大多用來保護圖片免受其他網站盜連,不過稍為修改一下,都可以用來保護FLV免受盜連。常用方法有兩種:

編輯.htaccess
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourdomain.com [NC]
RewriteRule \.(flv|mp3)$ - [NC,F,L]

編輯httpd.conf,首先啟動此:
LoadModule setenvif_module modules/mod_setenvif.so
將以下Code放在<VirtualHost>裡,可以放在</VirtualHost>之前:
SetEnvIfNoCase Referer "^http(s)?://(www\.)?yourdomain.com(/|$)" local_ref=1
SetEnvIfNoCase Referer "^$" local_ref=1
<FilesMatch "\.(flv|mp3)">
Order Allow,Deny
Allow from env=local_ref
</FilesMatch>

可惜,FLV需要通過Flash Player去播放,不同Browsers甚至不同版本處理Plugin中的HTTP Referer都是不同,所以以上反盜連方法來保護FLV根本是沒有可能 :(

Browser 傳回Plugin本身網址(即最理想情況:SWF的網址) 沒有傳回Referer 傳回本身嵌入SWF的網頁的網址
IE X    
Firefox   X  
Safari (MAC)     X
Safari (Win)   X  
<Chrome 3     X
Chrome 3+ X    
<=Opera 9     X
Opera 10+ X    

當你好像Youtube般,容許其他人在他們網頁中放一段HTML Code去播放你的Flash Video Player,反盜連保護就會出問題,從以上總結可見,第三直行的Browser就會出問題,例如Safari (MAC),影片根本不能播放,因為Apache 認為FLV正被其他網站盜連,拒絕FLV的傳送要求。

本文章由發表。
同組文章