作用

  1. 制定并允许检查请求的链接的真实性以及保护资源免遭未经授权的访问
  2. 限制链接生效周期

首先检查nginx是否已安装模块

#nginx -V

输出nginx所有已安装模块,检查是否有ngx_http_secure_link_module

原理图

语法

配置nginx

#vi /etc/nginx/conf.d/cms.conf
location /sec/ {
root /soft/xlongwei;
secure_link $arg_st,$arg_e;
secure_link_md5 segredo$uri$arg_e; #segredo为密码样例
if ( $secure_link = "" ) {
return 402;
}
if ( $secure_link = "0" ) {
return 405;
}
}

用php生成测试安全下载链接,由于配置有discuz版的bbs.xlongwei.com,所以直接在discuz目录编辑sec.php即可测试

#vi /soft/discuz/sec.php
<?php
$secret = 'segredo'; // secrets
$path = "/".$_REQUEST["f"]; // ?f=path
$expire = time()+10; // add ? seconds to be available,这里是10妙内访问有效 $md5 = base64_encode(md5($secret . $path . $expire, true)); // Using binary hashing.
$md5 = strtr($md5, '+/', '-_'); // + and / are considered special characters in URLs, see the wikipedia page linked in references.
$md5 = str_replace('=', '', $md5); // When used in query parameters the base64 padding character is considered special. $url = "http://cms.xlongwei.com$path?st=$md5&e=$expire"; //安全下载链接可以直接echo输出 $arr = array("url"=>$url, "expire"=>date("Y-m-d H:i:s", $expire), "md5"=>$md5); echo json_encode($arr); //转成json格式输出也不错
?>

测试访问:http://bbs.xlongwei.com/sec.php?f=sec/test.txt

响应内容中的url:http://cms.xlongwei.com/sec/test.txt?st=FzMATYtf1urcUE5hKf01Bg&e=1437467381

如果超时后再访问会返回405

shell方式生成,http://tool.xlongwei.com/shells/sec.sh

secret=`echo segredo`
path=$1
e=`date -d "+15 seconds" +%s`
str=$secret$path$e
#echo $str
st=`echo -n $str | openssl md5 -binary | openssl base64 | tr +/ -_ | tr -d =` url="http://cms.xlongwei.com$path?st=$st&e=$e"
echo $url

java方式生成

public class Sec {
public static String url(String path) {
String secret="segredo"; //secret
String e=String.valueOf((System.currentTimeMillis()/1000)+10); //10 seconds
String md5 = Base64.encodeBase64URLSafeString(DigestUtils.md5(secret+path+e));
return "http://cms.xlongwei.com"+path+"?st="+md5+"&e="+e;
}
}

原文链接:https://www.xlongwei.com/detail/15072116

# secure_link_module模块的更多相关文章

  1. Nginx详解十九:Nginx深度学习篇之进阶高级模块

    这里介绍一些最新或者理解起来有一些难度的Nginx模块 一.secure_link_module模块作用原理:1.制定并允许检查请求的链接的真实性以及保护资源免遭未经授权的访问2.限制链接生效周期 配 ...

  2. nginx 之高级模块

    secure_link_module 模块 作用: 制定并允许检查请求的链接的真实性以及保护资源免遭未经授权的访问 限制链接生效周期 配置语法 Syntax:secure_link expressio ...

  3. Nginx详解二十七:Nginx架构篇之安全篇

    1.常见的恶意行为:爬虫行为和恶意抓取.资源盗用 解决方案: 基础防盗链功能:不让恶意用户能轻易爬去网站对外数据 secure_link_module模块:对数据安全性提高,加密验证和失效性,适合核心 ...

  4. nginx的入门到框架设计

    mac上安装nginx 安装与启动 安装 brew install nginx 命令 通过 Homebrew 下载的软件默认位置在 /usr/local/Cellar 应该ln-s 加连接就能全局 n ...

  5. nginx 变量相关的map模块与split_clients模块及geo模块和geoip模块及keepalive介绍

    map 模块指令默认编译进nginx的 Syntax: map string $variable { ... } # 表示string匹配到{}里的值或变量赋值给$variable Default: ...

  6. npm 私有模块的管理使用

    你可以使用 NPM 命令行工具来管理你在 NPM 仓库的私有模块代码,这使得在项目中使用公共模块变的更加方便. 开始前的工作 你需要一个 2.7.0 以上版本的 npm ,并且需要有一个可以登陆 np ...

  7. node.js学习(三)简单的node程序&&模块简单使用&&commonJS规范&&深入理解模块原理

    一.一个简单的node程序 1.新建一个txt文件 2.修改后缀 修改之后会弹出这个,点击"是" 3.运行test.js 源文件 使用node.js运行之后的. 如果该路径下没有该 ...

  8. ES6模块import细节

    写在前面,目前浏览器对ES6的import支持还不是很好,需要用bable转译. ES6引入外部模块分两种情况: 1.导入外部的变量或函数等: import {firstName, lastName, ...

  9. Python标准模块--ContextManager

    1 模块简介 在数年前,Python 2.5 加入了一个非常特殊的关键字,就是with.with语句允许开发者创建上下文管理器.什么是上下文管理器?上下文管理器就是允许你可以自动地开始和结束一些事情. ...

随机推荐

  1. 最基础的rpm命令

    rpm -ivh package.rpm 安装一个rpm包 rpm -ivh --nodeeps package.rpm 安装一个rpm包而忽略依赖关系警告 rpm -U package.rpm 更新 ...

  2. 00.不规则json序列化使用eval、demjson

    有下面一段字符串 import json str0 = '[{"name":"白云大道营业厅","siteaddr":"x...& ...

  3. vue 使用echarts

    import echarts from 'echarts'   <div id="kocGrow" style="width: 600px;height: 300p ...

  4. [转]如何有效地报告Bug

    英文原文:Simon Tatham,编译:Dasn 引言 为公众写过软件的人,大概都收到过很拙劣的bug报告,例如: 在报告中说“不好用”: 所报告内容毫无意义: 在报告中用户没有提供足够的信息: 在 ...

  5. web开发如何使用高德地图API(四)通过AMap.Marker自定义标点

    说两句: 以下内容除了我自己写的部分,其他部分在高德开放平台都有(可点击外链访问). 我所整理的内容以实际项目为基础希望更有针对性的,更精简. 点击直奔主题. 准备工作: 首先,注册开发者账号,成为高 ...

  6. win7安装gmpy2

    1.下载地址:https://pypi.python.org/pypi/gmpy2 2.安装python和pip python 安装 下载: https://www.python.org/getit/ ...

  7. ssl_error_weak_server_ephemeral_dh_key

    1. http://blog.csdn.net/mmoooodd/article/details/50264559 2. http://blog.csdn.net/zhu19774279/articl ...

  8. [luogu1373]小a和uim之大逃离_动态规划

    小a和uim之大逃离 题目大意:有一个n*m的矩阵.每个格子上有一坨0~k不等量的权值.有两个人,每个人任选一个格子作为出发点,并只能向下或向右走.求最后两个人所得到的权值mod k相等的方案数. 注 ...

  9. CPU工作原理简图

  10. Oracle EBS 从Web界面进入责任时,提示不存在可用的有效责任

    Oracle EBS 从Web界面进入责任时,提示不存在可用的有效责任         每次在Web界面,点击某一责任的功能时,弹出Form.会提示错误:对不起,不存在可用的有效责任.         ...