Referer防盜鏈

 呼叫中心企業後臺管理系統和前臺座席系統頁面中都有通話記錄錄音的試聽和下載功能,如何在用戶試聽和下載錄音的時候不暴露錄音地址或者錄音地址不能被盜用呢?這就涉及到mp3,圖片等資源的防盜鏈問題。

簡單的,我們可以用HTTP請求header中的referer判斷,只要referer是內部網站的地址或者可信任的地址,就可以訪問相應資源。通過Apache的FilesMatch配置可以實現,在Apache的配置文件httpd.conf中加入:

SetEnvIfNoCase Referer “^http://www.example.com” local_ref=1
SetEnvIfNoCase Referer “^http://test.example.com” local_ref=1
<FilesMatch “\.(txt|doc|mp3|zip|rar|jpg|gif)”>
    Order Allow,Deny
    Allow from env=local_ref    #referer爲www.example.com或test.example.com的請求
    Allow from 127.0.0.1          #本機地址
</FilesMatch>

其中SetEnvIf指令根據客戶端的請求屬性設置環境變量,SetEnvIfNoCase代表當滿足某個條件時,爲變量賦值,一般結合其他指令使用。

也可以使用正則表達式:

SetEnvIf Referer “^http://(.)+\.ilinux\.cn/” local_ref=1 
SetEnvIf Referer “^http://(.)+\.isql\.cn/” local_ref=1 
SetEnvIf Referer “^http://(.)+\.other\.org\.cn/” local_ref=1 
SetEnvIf Request_URI “/logo(.)+” local_ref=0 
<FilesMatch “\.(mp3|wmv|png|gif|jpg|jpeg|avi|bmp|ram|rmvb|rm|rar|zip|mp3)”> 
    Order Allow,Deny 
    Allow from env=local_ref 
</FilesMatch>

以上配置方式都還也寫到.htaccess,使用.htaccess文件也會存在一些問題,比如性能。如果使用.htaccess文件,則Apache需要在每個目錄中查找該文件,還必須在所有更高級的目錄中查找它,另外,每次請求一個頁面時,也都需要讀取.htaccess文件。因此,允許使用.htaccess文件都會導致性能的下降。

例如,對/var/www/htdocs中頁面的請求,Apache必須查找以下文件:

/.htaccess
/var/.htaccess
/var/www/.htaccess
/var/www/htdocs/.htaccess

總的來說,通過.htaccess來保護網站更爲方便和靈活。

最後還可以用Apache的mod_rewrite模塊等進行防盜鏈。

 

文章參考:

http://www.linuxidc.com/Linux/2008-05/12924.htm

http://hi.baidu.com/smallfish7788/blog/item/1b2e1dd9a5944e3033fa1cb1.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章