前言:
眼前咱们对“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
本文仅供学习分享。