当前位置: 首页 > news >正文

Nginx 自带防盗链模块

Nginx

nginx.conf

    location ^~ /secure/img/ {
        #secure_link $arg_md5,$arg_expires;
        #url?key=xxx&e=xxx
        #secure_link_md5 "sbdx_$secure_link_expires";
        #key生成规则
            secure_link $arg_md5,$arg_expires;
            secure_link_md5 "$secure_link_expires$uri$remote_addr secret";


        if ($secure_link = "") {
            return 403;
        }
        if ($secure_link = "0") {
            return 410;
        }
    }

index.php

<?php
for ($i = 1; $i <= 6; $i++)
{
    $url = "/secure/img/{$i}.jpg";
    $e   = time() + 10;  //到期时间
    $key = "{$e}{$url}127.0.0.1 secret";  //这里与nginx.conf的secure_link_md5相对应
    $md5 = base64_encode(md5($key, true));  //MD5第二个参数是关键,返回原始二进制数据
    $md5 = strtr($md5, '+/', '-_');
    $md5 = str_replace('=', '', $md5);
    $url .= "?md5={$md5}&expires={$e}";
    echo "加密访问地址:<a href='{$url}' target='_blank'>{$url}</a> <br>";
    echo "<img src='{$url}' /> <br>\n";
}
?>

被MD5第二个参数搞死了,折腾了好久才发现是这里的问题,True表示 MD5 报文摘要将以16字节长度的原始二进制格式返回

参考文档:http://nginx.org/en/docs/http/ngx_http_secure_link_module.html

相关文章:

  • 在MTK中添加TASK与常用函数分析
  • 大数据时代必不可少的大数据分析和制作工具大全
  • SubVersion服务器Windows安装指南
  • CentOS里ifcfg的device指的是什么?
  • SQLServer2005批量查询自定义对象脚本
  • 使用Let's encrypt保护你的网络通信
  • SQLServer中求两个字符串的交集
  • 139说客的优势和局限性
  • phpjm php加密的解密过程
  • 被遗忘的SQLServer比较运算符修饰词
  • PHP MySQL 数据字典生成器
  • 设计启动屏幕
  • CentOS 安装NodeJS
  • 潘多拉网吧防火墙 1.0 双线破解
  • 视频弹幕Demo
  • HTML-表单
  • JavaScript 基础知识 - 入门篇(一)
  • JavaScript创建对象的四种方式
  • Java到底能干嘛?
  • JS专题之继承
  • Laravel 实践之路: 数据库迁移与数据填充
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • spark本地环境的搭建到运行第一个spark程序
  • supervisor 永不挂掉的进程 安装以及使用
  • 关键词挖掘技术哪家强(一)基于node.js技术开发一个关键字查询工具
  • 理解在java “”i=i++;”所发生的事情
  • 悄悄地说一个bug
  • 如何使用 JavaScript 解析 URL
  • 听说你叫Java(二)–Servlet请求
  • 掌握面试——弹出框的实现(一道题中包含布局/js设计模式)
  • elasticsearch-head插件安装
  • 组复制官方翻译九、Group Replication Technical Details
  • ​ ​Redis(五)主从复制:主从模式介绍、配置、拓扑(一主一从结构、一主多从结构、树形主从结构)、原理(复制过程、​​​​​​​数据同步psync)、总结
  • ​secrets --- 生成管理密码的安全随机数​
  • ​比特币大跌的 2 个原因
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • (C++17) std算法之执行策略 execution
  • (SpringBoot)第二章:Spring创建和使用
  • (笔试题)分解质因式
  • (分布式缓存)Redis哨兵
  • (排序详解之 堆排序)
  • (三维重建学习)已有位姿放入colmap和3D Gaussian Splatting训练
  • (十一)图像的罗伯特梯度锐化
  • (四)Linux Shell编程——输入输出重定向
  • (一)Mocha源码阅读: 项目结构及命令行启动
  • (一)搭建springboot+vue前后端分离项目--前端vue搭建
  • (转)mysql使用Navicat 导出和导入数据库
  • (转)shell中括号的特殊用法 linux if多条件判断
  • (转)关于多人操作数据的处理策略
  • (转载)Google Chrome调试JS
  • .NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布
  • .Net core 6.0 升8.0
  • .NET关于 跳过SSL中遇到的问题
  • .NET简谈设计模式之(单件模式)