nginx(四十九)使用referer模块和secure_link模块提供变量防盗链

一  referer模块

小结: referer模块可以'进行防盗链',但这种防盗链方式比较'脆弱',可以通过'伪造值'来绕过防盗链

Referer请求头    Referrer-Policy响应头

默认:浏览器会在'特定场景'的跳转自动添加Referer请求头

备注:其它如'curl、postman'方式不会主动添加,但是可以'伪造'Referer请求头

二  secure_link模块

①   概述

类比: 这个的原理是生成一个'下载的 token',用户访问的时候 nginx 来'验证这个 token'

场景: 检查'请求链接的权限(access)'以及'是否过期',多用于'下载服务器'防盗链

②   secure_link

语法: secure_link md5_hash[,expiration_time]

细节: 'expiration_time'是可选的

1)使用secure_link定义一段'包含了变量的字符串',从中获取'校验和的值'和'url链接的生命周期'

细节点:'变量'常见来自'查询参数(arg_name)'或'请求头(http_head)'

2)字符串中的'校验和的值'会和'secure_link_md5'中的指定参数的'md5 哈希值'进行对比

3)如果两个值不一致,$secure_link变量值会被'设置为空串'

4)如果一致,才会检查'链接的生命周期'

  [1]、如果链接'设置有'时效性,检查发现'过期',$secure_link变量值为'0'

  [2]、'没有'过期,$secure_link变量值则为'1'

  [3]、如果'没有设置过期时间',则链接'永久'有效

重点: 先检查'md5 hash'是否匹配、再检查'life_time'是否过期

③   secure_link_md5

④  方式一

1)'secure_link' + 'secure_link_md5' 指令配合

2)用$secure_link'检验'结果

$secure_link的返回值规则:验证不通过是'空'、过期是'0'、通过是'1'

 (1) 官方案例

tr命令 openssl md5 openssl base64

(2)解读

 (3)实操

1)nginx配置

重点: nginx只需要知道'如何拼接(变量+字符串)'即可,因为'hash不可逆'

2)生成hash摘要

关注点1: 要与'secure_link_md5'的格式一样

关注点2: 这个用'openssl'来模拟产生hash,生产级环境要'严谨的设计程序'生成

python获取自epoch的秒数 

++++++++++ '思考:生产环境谁产生hash摘要别嗯发送给客户端?' ++++++++++

3)客户端发送请求测试

⑤  secure_link_secret

===============  /prefix/hash/link的'解读'  ===============

1)prefix'前缀'是非斜杠的任意的字符串

2)hash'哈希值'是link与密钥secret的MD5值

3)link'请求的路径'

⑥  方式二

$secure_link的返回值规则:验证不通过是'空';通过则值为'资源路径'

(1)官方案例

 (2)实操

1)原理

2)生成md5

3)nginx部分配置

细节点: nginx事先'已经知道' word

补充: ^可以匹配上'任何url'

4)客户端发送请求

机制: 

  1) nginx从url中取出'test.txt'并与nginx中的配置的'word'生成一个新的'md5_hash'

  2) 然后与请求中传递的'md5_hash'做比较

⑦   内置变量 

⑧   思考1

⑨  思考2

⑩  思考3

⑪  思考4

后续: 收集'计算机相关'词汇  -->'目的':看英文文档
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值