使用FastDFS的内置防盗链功能
本帖最后由 happy_fish100 于 2011-02-17 16:24 编辑
FastDFS内置防盗链采用Token的方式。
token是带时效的,包含了文件ID、时间戳ts和密钥。
在设定的时间范围内,比如5分钟内,token是有效的。
FastDFS在URL中带上当前时间戳和带时效的token,参数名分别为ts和token。
FastDFS API中提供了生成token的算法,扩展模块中会对token进行检验。
token的生成和检验都在服务器端,因此不会存在安全问题。
链接示例:http://192.168.1.15:8080/group1/M01/01/01/wKgBD01c15nvKU1cAABAOeCdFS466570.c?token=b32cd06a53dea4376e43d71cc882f9cb&ts=1297930137
http.conf中防盗链相关的几个参数如下:
http.anti_steal.check_token:是否做token检查,缺省为false
http.anti_steal.token_ttl:token TTL,即生成token的有效时长
http.anti_steal.secret_key:生成token的密钥,尽量设置得长一些,千万不要泄露出去
http.anti_steal.token_check_fail:token检查失败,返回的文件内容,需指定本地文件名
配置示例如下:
# if use token to anti-steal
# default value is false (0)
http.anti_steal.check_token=false
# token TTL (time to live), seconds
# default value is 600
http.anti_steal.token_ttl=900
# secret key to generate anti-steal token
# this parameter must be set when http.anti_steal.check_token set to true
# the length of the secret key should not exceed 128 bytes
http.anti_steal.secret_key=FastDFS1234567890
# return the content of the file when check token fail
# default value is empty (no file sepecified)
http.anti_steal.token_check_fail=/home/yuqing/fastdfs/conf/anti-steal.jpg
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
余兄,我已经将http.anti_steal.check_token设置为true了,请问为什么我尝试只用了“?”前的url而没加token仍就能访问这个文件呢?正常不带token的话应该不能访问才对吧回复 1# happy_fish100
抱歉,没有看仔细。谢谢鱼兄!
回复 7# monton
已经提供了啊!在class ProtoCommon中。
鱼兄,Java版本的客户端没有看到生成Token的API?是不是要自己实现呢?
回复 5# happy_fish100
看FAQ了,服务器时间检查过了,加密时也没有附带group信息。
明天用php的client试试吧,可惜php的client没有windows版本的~
回复 4# yibin001
看一下论坛中的FAQ吧,有相关的一条,呵呵。
终于等到老大的回复。
但我按这种算法得到的token除到文件ID之后,却无法访问,服务器上debug时得到的结果是token不匹配。
我用的是c#客户端,单步调试看到算法,现在我不知道该怎么弄了。
回复 2# yibin001
恩,差不多就是这样的。
token的生成算法是什么呢?
md5(文件ID+私钥+时间戳)么?