一、前言
我们通过HTTP的方式完成文件的下载。形如
http://172.31.20.220/group1/M00/00/00/rB8UEVrjR1mAV_XWAUWlTgbnZcg938.pdf,但是这样是不安全的,因为只要知道ip和文件路径,就能下载所需文件。因此采用Token方式防盗链。
FastDFS内置防盗链采用Token的方式。Token是带时效的,也就是说在设定的时间范围内,比如1分钟,token是有效的。token包含了文件id、时间戳ts和密钥。FastDFS在URL中带上当前时间戳和带时效的token,参数名分别为ts和token。Token的生成和校验都是在服务端,因此不会存在安全问题。形如
http://172.31.20.220/group1/M00/00/00/rB8UEVrki1uAWDrRAASH9xd2VVI137.pdf?token=
09267ad7bbe6615a79f046ce10eed623&ts=1524898341
二、配置文件说明
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检查失败,返回的文件内容,需指定本地文件名
配置示例:
# HTTP default content type
http.default_content_type = application/octet-stream
# MIME types mapping filename
# MIME types file format: MIME_type extensions
# such as: image/jpeg jpeg jpg jpe
# you can use apache's MIME file: mime.types
http.mime_types_filename=mime.types
# if use token to anti-steal
# default value is false (0)
#开启token校验
http.anti_steal.check_token=true
# token TTL (time to live), seconds
# default value is 600
http.anti_steal.token_ttl=60
# 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=/etc/fdfs/anti-steal.jpg
比如http.anti_steal.token_ttl=60,也就是说token的失效时间为60秒。当超过60秒时,token失效。此时再拿原来的URL去访问图片资源。将会失效,从而显示anti-steal.jpg图片。
java client代码如下:
//fid为从数据库中读出的值
String fid="group2/M00/00/02/wKjgzFrpTGOAUl37AABFbiLVDsI531.png";
String substring = fid.substring(fid.indexOf("/")+1);
//unix时间戳 以秒为单位
int ts = (int) (System.currentTimeMillis() / 1000);
String secret_key = "FastDFS1234567890";
String token=new String();
try {
token= ProtoCommon.getToken(substring, ts, secret_key);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
StringBuilder sb = new StringBuilder();
sb.append("192.168.224.208/")
sb.append(fid);
sb.append("token=").append(token);
sb.append("&ts=").append(ts);
return sb.toString();
四、生成的token验证无法通过
出现这样的问题请进行如下两项检查:
1、 确认调用token生成函数,传递的文件id中没有包含group name,传递的文件id形如:
M00/00/00/rB8UEVrjR1mAV_XWAUWlTgbnZcg938.pdf
2、 确认服务器时间基本是一致的,注意服务器时间不能相差太多,不要相差到分钟级别。
相关推荐
主要介绍了SpringBoot集成FastDFS+Nginx整合基于Token的防盗链的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
防盗链完美解决方案 防盗链完美解决方案,提供给你一些安全的方法。
用来搭建FastDFS. apache-tomcat-7.0.82.tar.gz fastdfs-nginx-module_v1.16.tar.gz FastDFS_v5.05.tar.gz libevent-2.0.22-stable.tar.gz libfastcommon_v1.01.tar.gz nginx-1.6.3.tar.gz ngx_cache_purge-...
java 集成 fastdfs - spring mvc 集成 java 集成 fastdfs - spring mvc 集成 java 集成 fastdfs - spring mvc 集成 java 集成 fastdfs - spring mvc 集成 java 集成 fastdfs - spring mvc 集成
fastdfs 分布式系统安装后 对于如何用php系统连接是个问题,这里经过多次测试,能够正确连接并上传图片
dockerhub 官网的 FastDfs 容器,版本号为 morunchang/fastdfs ,此内容为本人自用,为保障下载速度,进行上传以便于后期下载
fastdfs的安装手册说明+配置文件+fastdfs安装包+nginx安装包,压缩包内是自己结合网上资料整理的fastdfs的全套配置及说明,已成功安装并运行
针对FastDFS文件系统的监控软件,软件基于B/S,实现对FastDFS整体服务状况与各类节点的监控,实时掌握FastDFS的服务状况。同时,通过对FastDFS并发情况与存储情况的监控,为FastDFS的部署实施提供参考。
linux环境单机搭建fastdfs+nginx文件管理系统
fastdfs_client; fastdfs_client_java._v1.25.tar.gz; fastdfs_client_v1.20.jar; FastDFS_Java_Doc_v1.20.tar.gz; FastDFS_v5.05.tar.gz; fastdfs-nginx-module_v1.16.tar.gz; libfastcommonV1.0.7.tar.gz; ...
fastDFS
fastdfs6.06安装所需安装包fastdfs-6.06.tar.gz,包括依赖包fastdfs-nginx-module-1.22.tar.gz、libfastcommon-1.0.43.tar.gz、nginx-1.17.8.tar.gz
赠送jar包:fastdfs-client-1.27.2.jar; 赠送原API文档:fastdfs-client-1.27.2-javadoc.jar; 赠送源代码:fastdfs-client-1.27.2-sources.jar; 赠送Maven依赖信息文件:fastdfs-client-1.27.2.pom; 包含翻译后...
经验一:FastDFS文件下载恢复原始文件名 经验二:从文件的使用技巧
FastDFS分布式存储介绍
FastDFS开发 、FastDFS_client.jar、FastDFS.jar、FastDFS的java开发jar包
FastDFS源码,sSpringBoot集成FastDFS源码,解决了跨域问题,集成了Swagger,方便测试使用。
vs2017 FastDFSClient C# 源码,经过测试可以正常使用
安装FastDFS所需安装包 fastdfs-nginx-module_v1.16.tar FastDFS_v5.05.tar libfastcommon-1.0.7.tar nginx-1.8.0.tar ngx_cache_purge-2.3.tar
为什么要使用分布式文件系统呢?fastdfs基本原理。什么是分布式文件系统。