Chinaunix

标题: 请教鱼兄关于FastDFS的防盗链的一些问题 [打印本页]

作者: nicole0169    时间: 2012-07-13 10:20
标题: 请教鱼兄关于FastDFS的防盗链的一些问题
对于FastDFS的防盗链原理,不太明白,想请教鱼兄。

举例比如我生成一个这样的下载地址 http://xx.xx.xx.xx/group1/M00/00/00/xxxxxxx.jpg

开启防盗链功能后,直接访问这个地址是不被允许的。

那么要如何才能得到正确访问这个文件的http地址呢? TOKEN和TS是在什么地方什么时候加上去的呢?

需要前端的PHP脚本来做什么呢?
作者: nicole0169    时间: 2012-07-13 10:25
刚才看了一下php_client的README,是不是由fastdfs_http_gen_token这个方法来生成TOKEN然后加到http的下载地址上呢?
作者: happy_fish100    时间: 2012-07-13 14:03
回复 2# nicole0169

FastDFS扩展模块内置了通过token来实现防盗链的功能。
需要在url中加两个参数:token和ts。token的确就是用你所说的那个函数生成的。
作者: nicole0169    时间: 2012-07-13 14:32
谢谢鱼兄的指点。

不过问题似乎仍然有,我通过Client上传的文件,返回的$res

array(2) {
  ["group_name"]=>
  string(6) "group1"
  ["filename"]=>
  string(44) "M00/00/00/wKg0u1AAYr2ghFmlAAEDBJmsLxI754.txt"
}
M00/00/00/wKg0u1AAYr2ghFmlAAEDBJmsLxI754.txtgroup1192.168.52.187jquery.txtArray
(
    [0] => M00/00/00/wKg0u1AAYr2ghFmlAAEDBJmsLxI754.txt
    [1] => group1
    [2] => 192.168.52.187
    [3] => jquery.txt
)


然后我的token生成的参数设置如下
$groupname  = 'group1';
$filename = 'M00/00/00/wKg0u1AAYr2ghFmlAAEDBJmsLxI754.txt';
$ts = time();
$token = fastdfs_http_gen_token($groupname.'/'.$filename , $ts);
然后生成的TOKEN和TS跟在我的下载链接中
http://192.168.52.187/M00/00/00/ ... 0&ts=1342160394

一直提示我TOKEN FAIL,然后重定向到防盗链的那张默认图去了。
作者: nicole0169    时间: 2012-07-13 15:08
还想请教一个问题

当地址是http://192.168.52.187/M00/00/00/ ... wAAEDBJmsLxI875.txt时,防盗链机制是起效的。

但是当我把M00去掉后,直接访问文件存放路径http://192.168.52.187/00/00/wKg0u0_-0qD83O3wAAEDBJmsLxI875.txt

就可以绕过防盗链机制了,要如何规避类似的问题呢?还是在Apache的conf文件要做相应的设置?

还请鱼兄不吝赐教。 谢谢!
作者: happy_fish100    时间: 2012-07-13 21:54
回复 5# nicole0169

你把apache的document root设置到其他目录,按INSTALL文档创建符号链接,即可解决这个问题。
作者: nicole0169    时间: 2012-07-16 09:02
多谢鱼兄的指点,问题已经解决!




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2