呼叫中心企业后台管理系统和前台座席系统页面中都有通话记录录音的试听和下载功能,如何在用户试听和下载录音的时候不暴露录音地址或者录音地址不能被盗用呢?这就涉及到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

    Order Allow,Deny
    Allow from env=local_ref    #referer为www.example.com或test.example.com的请求
    Allow from 127.0.0.1          #本机地址

其中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 
 
    Order Allow,Deny 
    Allow from env=local_ref 

以上配置方式都还也写到.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