4

这个问题可能看起来有点奇怪,但是是否有可能使用 VCL 中的穷人解决方案来解析由引用者(主要)创建的签名请求(使用共享密钥,也就是 HMAC 的穷人解决方案)站点,并且仅在签名正确且(已签名)时间戳未过期的情况下才从清漆中提供内容?

也就是说,类似于 Amazon S3 的工作方式,您可以轻松地为您的 S3 对象创建一个签名的临时 URL,该 URL 将在定义的秒数内过期。

注意:这里我不是在谈论缓存对象过期,而是客户端的 URL 过期。

当您只想向用户提供临时 URL 以防止长期盗链而不检查引荐来源网址时,它会很方便。

所以 - VCL 中的临时 URL(最好在 vcl_recv 中)的一个糟糕的解决方案,使内部对象过期)。不制作VMOD可以吗?

编辑:

我发现了另一种使用 Varnish 授权内容的方法:

http://monolight.cc/2011/04/content-authorization-with-varnish/

但这仍然不是我想要实现的。

此致!

4

2 回答 2

3

是的,这是可能的。

本质上,您需要验证签名(digest vmod),从它所在的任何标头(regsub)中挑选出时间戳,并将其与当前时间进行比较。

用于std.integer()转换时间戳:

https://www.varnish-cache.org/docs/trunk/reference/vmod_std.html#integer

使用 VCL 中的内置now变量来查找当前时间戳。您可能想要(now + 0s)强制 Varnish 给您一个 unix 时间戳。

https://www.varnish-cache.org/docs/trunk/reference/vcl.html#variables

摘要 vmod 在 github 上:

https://github.com/varnish/libvmod-digest
于 2013-04-27T17:13:29.393 回答
0

已经有一个VMOD,如果这有帮助吗?

Varnish 安全下载模块

于 2013-07-24T01:57:06.020 回答