防止直接调用文件

ESW*_*ESW 1 files web-server apache-2.2

我什至不确定这是否可能;我在 apache 服务器上。对于位于以下位置的文件:

http://www.example.com/dir/img.jpg
Run Code Online (Sandbox Code Playgroud)
  • 允许在从该目录调用的页面中加载此图像。
  • 禁止直接加载该图片;IE。上面的网址不应该加载
  • 防止从位于别处的页面链接此图像

目的是文件应该只能显示在其预定的特定页面上;它不应该直接可见。这能做到吗?

Den*_*son 5

Apache 文档

被阻止的内嵌图像

描述:假设我们在http://www.quux-corp.de/~quux/下 有一些带有内联 GIF 图形的页面。这些图形很好,所以其他人直接通过超链接将它们合并到他们的页面中。我们不喜欢这种做法,因为它给我们的服务器增加了无用的流量。

解决方案:虽然我们不能 100% 保护图像不被包含,但我们至少可以限制浏览器发送 HTTP Referer 标头的情况。

RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://www.quux-corp.de/~quux/.*$ [NC]
RewriteRule .*\.gif$        -                                    [F]

RewriteCond %{HTTP_REFERER}         !^$
RewriteCond %{HTTP_REFERER}         !.*/foo-with-gif\.html$
RewriteRule ^inlined-in-foo\.gif$   -                        [F]
Run Code Online (Sandbox Code Playgroud)

  • 很好的例子。没有 100% 的解决方案,但这已经很接近了,因为引用标头不是强制性的,并且很容易调整,尽管不是在问题中提到的情况下。+1 (2认同)