龙空技术网

Nginx更高级的防盗链解决方案

码上读书 67

前言:

眼前咱们对“nginx urlhash”大概比较关切,你们都需要学习一些“nginx urlhash”的相关资讯。那么小编也在网络上搜集了一些对于“nginx urlhash””的相关文章,希望咱们能喜欢,姐妹们快快来了解一下吧!

上一篇文章我们介绍了Nginx用referer模块来做防盗链

但是攻击者可以伪造header,来进行盗链。这个成本其实还是比较低的。

今天我来看一个更牛的防盗链的解决方案-- secure-link。

ngx_http_secure_link_module:默认是不编译进nginx的,如有需要可以通过--with-http_secure_link_module来添加。

防盗链的过程。

1. 我们所展示出来的url 链接并不是直接把资源文件名,目录暴露出来,而是进行一定加密展示在客户端上。

2. 当客户端请求我们的加密url时,Nginx中的secure_link变量会判断是true false来决定是否通过验证。

主要实现原理是:

我们可以认为hash算法是不可逆的。客户端只能拿到经过hash后的url。只有生成hash后url的服务器和验证url的Nginx才能保存hash算法前的原始字符串。原始字符串通常需要保存以下部分,

具体资源的位置,以防止拿到一个安全的url就可以访问其他的资源。

用户的信息,如:IP地址,用户名等,某一个用户可访问不代表其他用户也可以访问。

时间戳:使用安全URL及时过期。

密钥,仅服务端拥有,提高攻击者猜测出原始字符串的成本。

如果没有同时包含以上部分,仍然是可用的,但是安全性会降低。

相关变量:

secure_link:有3个值,空字符串:验证没通过。0:url过期。1:通过验证。

secure_link_expires:时间戳的值。

相关语法:

Syntax: secure_link expression;Default: —Context: http, server, locationSyntax: secure_link_md5 expression;Default: —Context: http, server, locationSyntax: secure_link_secret word;Default: —Context: location

本文仅供学习分享。

标签: #nginx urlhash #nginx防止伪造referer