文档章节

fastdfs防盗链设置

chaun
 chaun
发布于 2017/01/22 13:46
字数 467
阅读 743
收藏 1

fastdfs防盗链设置

一、/etc/fdfs/http.conf配置

http.default_content_type = application/octet-stream

http.mime_types_filename=mime.types

#是否做token检查,缺省为false

http.anti_steal.check_token=true

#即生成token的有效时长 秒

http.anti_steal.token_ttl=900

#生成token的密钥,尽量设置得长一些

http.anti_steal.secret_key=FastDFS1234567890

# token检查失败,返回的文件内容,需指定本地文件名

http.anti_steal.token_check_fail=/etc/fdfs/conf/error.jpg

配置完后,重启一下nginx

二、在traker中上传文件

# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf /usr/local/src/test.jpg

# group1/M00/00/00/wKgB2ViEMZOAeE4rAAF1DzcVmmk051.jpg

三、java生成token

package com.commnon;

import java.io.UnsupportedEncodingException;
import java.security.NoSuchAlgorithmException;

/**
* Copyright (C) 2008 Happy Fish / YuQing
*
* FastDFS Java Client may be copied only under the terms of the GNU Lesser
* General Public License (LGPL).
* Please visit the FastDFS Home Page http://www.csource.org/ for more detail.
**/
public class ProtoCommon {

	/**
	* get token for file URL
	* @param remoteFilename the filename return by FastDFS server
	* @param ts unix timestamp, unit: second
	* @param secretKey the secret key
	* @return token string
	 * @throws UnsupportedEncodingException 
	 * @throws NoSuchAlgorithmException 
	*/
	 public static String getToken(String remoteFilename, long ts, String secretKey) throws UnsupportedEncodingException, NoSuchAlgorithmException{
	 	byte[] bsFilename = remoteFilename.getBytes("UTF-8");
	 	byte[] bsKey = secretKey.getBytes("UTF-8");
	 	byte[] bsTimestamp = (new Long(ts)).toString().getBytes("UTF-8");
	 	
	 	byte[] buff = new byte[bsFilename.length + bsKey.length + bsTimestamp.length];
	 	System.arraycopy(bsFilename, 0, buff, 0, bsFilename.length);
	 	System.arraycopy(bsKey, 0, buff, bsFilename.length, bsKey.length);
	 	System.arraycopy(bsTimestamp, 0, buff, bsFilename.length + bsKey.length, bsTimestamp.length);
	 	
	 	return md5(buff);
	 }
	 
	 /**
	 * md5 function
	 * @param source the input buffer
	 * @return md5 string
	 */
	 public static String md5(byte[] source) throws NoSuchAlgorithmException{
	  	char hexDigits[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd',  'e', 'f'};
	    java.security.MessageDigest md = java.security.MessageDigest.getInstance("MD5");
	    md.update(source);
	    byte tmp[] = md.digest();
	    char str[] = new char[32];
	    int k = 0;
	    for (int i = 0; i < 16; i++)
	    {
	     str[k++] = hexDigits[tmp[i] >>> 4 & 0xf];
	     str[k++] = hexDigits[tmp[i] & 0xf];
	    }
	    
	  	return new String(str);
	 }
	 
	 public static void main(String[] args) {
		 try {
			long lts = System.currentTimeMillis()/1000L;
			String remoteFilename = "M00/00/00/wKgB2ViEMZOAeE4rAAF1DzcVmmk051.jpg";
			System.out.println("lts="+lts);
			String token = ProtoCommon.getToken(remoteFilename, lts, "FastDFS1234567890");
			System.out.println("token="+token);
			System.out.println("httpurl=http://192.168.1.217/group1/"+remoteFilename+"?token="+token+"&ts="+lts);
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
		}
	}
}

生成的访问地址如下:

lts=1485063736

token=8ecdfa84ab9c37354d6a69b7bb2f09d3

httpurl=http://192.168.1.217/group1/M00/00/00/wKgB2ViEMZOAeE4rAAF1DzcVmmk051.jpg?token=8ecdfa84ab9c37354d6a69b7bb2f09d3&ts=1485063736 

四、输入访问地址

http://192.168.1.217/group1/M00/00/00/wKgB2ViEMZOAeE4rAAF1DzcVmmk051.jpg?token=8ecdfa84ab9c37354d6a69b7bb2f09d3&ts=1485063736  

参考:http://bbs.chinaunix.net/thread-1916999-1-1.html 

fdfs_client.conf

connect_timeout = 2
network_timeout = 30
charset = UTF-8
http.tracker_http_port = 8080
http.anti_steal_token = yes
http.secret_key = FastDFS1234567890

tracker_server = 192.168.0.116:22122
tracker_server = 192.168.0.119:22122

 

© 著作权归作者所有

chaun
粉丝 92
博文 271
码字总数 91117
作品 0
深圳
高级程序员
私信 提问
fastdfs-nginx扩展模块源码分析

FastDFS-Nginx扩展模块源码分析 1. 背景 在大多数业务场景中,往往需要为FastDFS存储的文件提供http下载服务,而尽管FastDFS在其storage及tracker都内置了http服务, 但性能表现却不尽如人意...

美码师
2015/03/23
0
0
【FastDFS】FastDFS防盗链

一、前言 我们通过HTTP的方式完成文件的下载。形如 http://172.31.20.220/group1/M00/00/00/rB8UEVrjR1mAV_XWAUWlTgbnZcg938.pdf,但是这样是不安全的,因为只要知道ip和文件路径,就能下载所...

qq_26545305
2018/05/03
0
0
Mac OSX 安装FastDFS:

Mac OSX 安装FastDFS: 准备文件:fastdfs-5.11 , libfastcommon 1. 安装libfastcommon 正常情况下,sudo ./make.sh编译不会有问题,但sudo ./make.sh install时,会报如下错误: Mac libfas...

胡桃夹子
2017/10/31
623
0
Centos 7 搭建 FastDFS文件管理系统

一、FastDFS介绍 FastDFS开源地址:https://github.com/happyfish100 参考:分布式文件系统FastDFS设计原理 参考:FastDFS分布式文件系统 个人封装的FastDFS Java API:https://github.com/...

欧虞山
2018/09/05
0
0
FastDFS的配置、部署与API使用解读(6)FastDFS配置详解之Storage配置

《Poechant的FastDFS的配置、部署与API使用教程》 FastDFS的配置、部署与API使用解读——(1)入门使用教程 FastDFS的配置、部署与API使用解读——(2)Java API:根据InputStream、文件名、...

晨曦之光
2012/04/24
487
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring使用ThreadPoolTaskExecutor自定义线程池及实现异步调用

多线程一直是工作或面试过程中的高频知识点,今天给大家分享一下使用 ThreadPoolTaskExecutor 来自定义线程池和实现异步调用多线程。 一、ThreadPoolTaskExecutor 本文采用 Executors 的工厂...

CREATE_17
今天
5
0
CSS盒子模型

CSS盒子模型 组成: content --> padding --> border --> margin 像现实生活中的快递: 物品 --> 填充物 --> 包装盒 --> 盒子与盒子之间的间距 content :width、height组成的 内容区域 padd......

studywin
今天
7
0
修复Win10下开始菜单、设置等系统软件无法打开的问题

因为各种各样的原因导致系统文件丢失、损坏、被修改,而造成win10的开始菜单、设置等系统软件无法打开的情况,可以尝试如下方法解决 此方法只在部分情况下有效,但值得一试 用Windows键+R打开...

locbytes
昨天
8
0
jquery 添加和删除节点

本文转载于:专业的前端网站➺jquery 添加和删除节点 // 增加一个三和一节点function addPanel() { // var newPanel = $('.my-panel').clone(true) var newPanel = $(".triple-panel-con......

前端老手
昨天
8
0
一、Django基础

一、web框架分类和wsgiref模块使用介绍 web框架的本质 socket服务端 与 浏览器的通信 socket服务端功能划分: 负责与浏览器收发消息(socket通信) --> wsgiref/uWsgi/gunicorn... 根据用户访问...

ZeroBit
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部