使用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"标题不是真正的最佳做法...
你会以不同的方式做事吗?你用这种方法看到了哪个问题?