Python与FastDFS的防盗链

文章介绍了如何在FastDFS中实现防盗链机制,首先强调需确保Nginx正常运行,然后通过配置FastDFS的http.anti_steal参数来启用token检查。接着展示了Python代码,用于生成包含时间戳和MD5加密的token,以增强安全性。防盗链链接在5分钟内有效,提高了静态资源的安全保护。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

防盗链,实际意义上就是为了防止他人盗用自己的资源,最近用到了FastDFS存储静态资源,为了增加静态资源的安全性,于是就准备做FastDFS的防盗链机制

注意:为了FastDFS的防盗链能直接使用,一定一定要先把自己Nginx搭建好,确保Nginx能用之后才能正常使用FastDFS的防盗链

配置好Nginx之后打开/etc/fdfs/文件夹

打开文件会看到这几个配置,按照上图方式配置

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检查失败,返回的图片,需指定本地文件名
Nginx的Http文件配置好之后就开始写Python后端代码了

代码如下

import hashlib, time
def Fastdfs_token():
    https = 'http://123.34.567.898/'  #服务器地址
    secret_key = 'globalb316...........'  #和http文件的secret_key必须一致
    img_url = 'group1\M00/00/00/rBE-A11_EmmAeIdaAFSasghjghic951753'  #图片的映射路径
    fileId = img_url[img_url.find('\\')+1:]  #去掉group1\ 得到后面的部分
    timestamp = str(int(time.time()))  #获取当前的时间
    buff = fileId + secret_key + timestamp  #进行字符串的拼接
    token = hashlib.md5(buff.encode(encoding='utf-8')).hexdigest() #使用MD5生成防盗链
    img_url = https +img_url+ '?'+'token='+token+'&ts='+timestamp
    return Respons(img_url)
#最后的防盗链格式为:
http://123.34.567.898/group1\M00/00/00/rBE-A11_EmmAeIdaAFSasghjghic951753?token=b0f838b486ff6eea66be40da58e19417&ts=1568690458
#?token=防盗链  ts=时间戳
ok了,拿上防盗链去快乐的访问图片吧,设置的是5分钟之内访问有效,过了5分钟之后防盗链就失效了,安全性大大的提升

附加一个随机生成secret_key的代码

from django.core.management import utils
secret_key = utils.get_random_secret_key()  #随机生成secret_key

ls
secret_key = utils.get_random_secret_key() #随机生成secret_key

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

芦苇浮绿水

觉得还不错请博主喝杯饮料

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值