一、前言
我们通过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的防盗链的方法 主要知识点: 1. SpringBoot框架:SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了...
本教程将详细讲解如何在Java环境中使用FastDFS客户端进行文件上传、下载、防盗链设置以及生成缩略图等操作。 首先,安装FastDFS需要准备以下步骤: 1. **环境配置**:确保服务器已安装了基础软件,包括GCC编译器、...
该项目是采用Java 11编写的FastDFS文件服务器访问与防盗链封装设计源码,共计23个文件,涵盖Java源代码、属性配置文件、JAR包和Markdown文档等多种类型。该设计旨在提供高效安全的文件访问解决方案,支持普通访问与...
5. **安全性**:考虑文件权限控制、防盗链、HTTPS支持等安全措施。 总之,FastDFS作为一个优秀的分布式文件系统,提供了高效、稳定、可扩展的文件存储解决方案。通过深入理解其工作原理和使用方法,我们可以更好地...
此外,还可以配置防盗链策略,防止非法的资源访问。 5. **性能优化**:`fastdfs-nginx-module`支持缓存机制,可以在Nginx层面缓存热门文件,减少对FastDFS服务器的请求压力。同时,Nginx自身的异步非阻塞I/O模型也...
它还支持防盗链、HTTP头部控制、访问统计等功能。 4. **安装与配置**:首先,需要在服务器上安装FastDFS和Nginx,然后编译并安装FastDFS-nginx-module。配置Nginx的配置文件,包括设置FastDFS的连接参数、URL重写...
1. **HTTP服务支持**:FastDFS-Nginx-Module实现了对FastDFS文件的HTTP GET和POST操作,支持断点续传、防盗链、限速等功能。 2. **负载均衡**:通过Nginx的负载均衡策略,可以实现对FastDFS存储节点的智能调度,提高...
同时,该模块还支持防盗链、限速、缓存等高级功能,为Web服务提供了更多安全保障。 总结起来,FastDFS-Nginx-Module 1.22是构建高效Web服务器的重要组件,它将FastDFS的分布式存储能力和Nginx的高性能Web服务结合,...
对于Nginx,可能还需要考虑SSL证书配置、防盗链策略、访问日志等安全和性能优化措施。 总的来说,FastDFS提供了高效的文件存储解决方案,而Nginx则作为面向用户的一面,使得文件访问更加便捷。它们的结合使用,为...
最后,配合博客步骤,你可以更深入地学习和理解FastDFS的使用,包括如何配置Nginx作为FastDFS的反向代理、如何设置防盗链策略、如何实现负载均衡等高级话题。记住,实践是检验真理的唯一标准,只有不断尝试和学习,...
此外,fastdfs-nginx-module还支持防盗链、文件访问权限控制等功能,确保文件的安全性。例如,可以设置只允许特定IP或域名访问,或者根据用户身份进行权限控制,防止非法访问。 总结来说,fastdfs-nginx-module_v...
FastDFS虽然提供了HTTP接口,但不支持断点续传、防盗链等特性,所以通常会结合Nginx进行部署。在Nginx中配置FastDFS模块,将HTTP请求转发到FastDFS,实现静态资源的高效访问。配置示例如下: ```nginx http { # ...
同时,FastDFS提供了权限控制、防盗链等安全措施,保护了文件的安全性。 总结,FastDFS的最稳定版源码为我们揭示了其背后的分布式文件系统设计思想和实现细节。通过对源码的学习,我们可以更好地理解其工作原理,...
在实际应用中,还可以根据需求配置防盗链、缓存策略等高级功能。 总的来说,这个“fastDFS和Nginx安装包.zip”应该包含了FastDFS和Nginx的安装脚本、配置模板等文件,方便用户在Linux环境中快速部署这两个组件,...
FastDFS提供了文件上传、下载、文件ID生成、文件访问控制等基本功能,同时支持文件的断点续传和文件访问的防盗链设置。 二、FastDFS特性 1. 分布式存储:FastDFS支持多组分布式存储,每组包含多个存储节点,可以...
Nginx_Lua与FastDFS的集成,通过Lua脚本的灵活性,可以实现更多自定义的功能,比如权限控制、防盗链、流量控制等。而且,这种模式下,Nginx作为统一的入口,简化了架构,提高了系统的可维护性和稳定性。 总之,...
在搭建基于FastDFS的文件服务器时,通常会结合Nginx来实现高效、稳定的文件上传和下载服务。...在实际应用中,还可以根据需求调整配置,例如添加负载均衡、设置防盗链策略等,进一步优化性能和安全性。
10. 安全性:FastDFS可以通过设置权限控制、防盗链等机制,保护文件的安全性。 总的来说,FastDFS是一个针对互联网应用设计的分布式文件系统,旨在提供高效稳定的服务,尤其适用于存储大量的小文件。它的设计思路和...
同时,Nginx的配置也很关键,比如设置防盗链、缓存策略、日志记录等,以提升服务质量和安全性。 总的来说,"Nginx+fastDFS"组合提供了一种高效且灵活的图片服务器解决方案,适用于处理大量并发的文件上传和下载请求...