HTTP_REFERER的替代方案

时间:2018-04-17 11:38:14

标签: http servlets reverse-proxy http-referer

使用MITRE,我实现了反向代理。目的显然是打开我们内部服务器之一的外部访问。这个内部服务器提供嵌入在另一个网站内的PNG,也由我们的一个服务器提供服务。我们需要保护这个PNG免受" hotlinking" (不确定是否正确说明了热链接 - > PNG应仅在我们的网站上可见,而不是直接在浏览器中打开链接)。

为了实现这一点,我们重写了代理servlet的execute方法,以检查标头是否包含" referer"标记,如果没有,我们返回带有403代码的BasicHttpResponse。

总之,我们有:

if(!proxyRequest.containsHeader("referer")) {
            HttpResponse basicResponse = new BasicHttpResponse(new ProtocolVersion("HTTP", 1, 1), HttpServletResponse.SC_FORBIDDEN, "Forbidden");   
            basicResponse.addHeader("Cache-Control","no-cache, no-store, max-age=0, must-revalidate");
            basicResponse.addHeader("Prama","no-cache");
            basicResponse.addHeader("Expires","Thu, 19 Nov 1981 08:52:00 GMT");
            return basicResponse;
        }

这看起来效果很好。然而,经过一些额外的阅读后,似乎依赖于" referer"标题不是真正的最佳做法...

你会以不同的方式做事吗?你用这种方法看到了哪个问题?

0 个答案:

没有答案