【发布时间】:2018-07-09 03:11:31
【问题描述】:
我正在使用 Nginx 运行一个使用良好的 CDN 系统,我需要保护我的链接,以免它们在用户之间共享。
当前配置完美运行..
# Setup Secure Links
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; }
然而,随着互联网变得越来越移动化,并且现在许多用户来自大学校园等,我看到大量失败的请求,并且因为请求者的 IP 在请求之间发生了变化,最终用户很恼火。
请求的 IP 几乎总是在同一个范围内,例如:
Original Request: 192.168.0.25
File Request: 192.168.0.67
我很乐意将这些安全链接锁定在一个范围内,例如
192.168.0.0 - 192.168.0.255
或者更进一步,让它变得更大
192.168.0.0 - 192.168.255.255
但我想不出在 nginx 中执行此操作的方法,或者如果 secure_link 功能甚至支持此操作。
如果这不可能 - 是否有人对如何保护限制较少但仍然相当安全的链接有任何其他想法?我曾考虑使用浏览器字符串,但我们的许多用户都有下载管理器或使用第 3 部分桌面客户端 - 所以这是不可行的。
我非常努力地尝试这样做,而不必使用任何动态代码来检查远程数据库,因为这是非常大的容量,我宁愿没有这种依赖性。
【问题讨论】:
-
为什么不将
$remote_addr替换为另一个仅有的映射变量? IP 的前 2/3 部分? -
看起来它可能会起作用 - 你以前做过吗?看起来需要正则表达式来分解 IP。如果你已经完成了,你可以分享配置吗?