【问题标题】:Apache deny access to images folder, but still able to display via <img> on siteApache 拒绝访问 images 文件夹,但仍然可以通过 <img> 在站点上显示
【发布时间】:2012-09-19 05:27:31
【问题描述】:

我的网站上有一个图片文件夹,我们称之为/images/,我在其中保存了很多图片。我不希望任何人通过网络直接访问图像,所以我在我的 Apache 配置中放置了一个新指令来实现这一点:

<Directory "/var/www/images/">
    Options Includes
    AllowOverride All
    Order allow,deny
    Deny from All
</Directory>

这是有效的,但它阻止了所有访问,我无法再通过我的网页显示图像。我想这是有道理的。那么如何有选择地控制对这些图像的访问呢?

基本上我只想通过某些网页和某些用户显示某些图像。最好的方法是什么?我需要将图像保存到数据库吗?

提姆

【问题讨论】:

  • 这是一道编程题,属于stackoverflow的

标签: apache2 security database access-control


【解决方案1】:

这是需要在代码中完成的事情。您必须重写代码,以便对于某些用户,代码将从本地磁盘读取图像(而不是将其作为 html 元素发送)并将其直接发送到 html 输出。下一个链接可能会提供有关如何执行此操作的一些信息:
How to retrieve image from server and display using json parsing?
http://www.codingforums.com/showthread.php?t=168935

【讨论】:

  • 我知道所有的技术工作都是在代码中完成的(我已经完成了)问题是我上面显示的指令阻止了访问,所以即使我给出了正确的路径 元素,服务器阻止访问图像文件。我需要阻止访问,以便所有用户都无法通过直接输入链接来查看图像。所以代码不是问题,访问控制是问题。
  • 如果您使用我提供的链接的代码示例获取这些文件,您仍然可以访问这些文件,因为虽然您无法通过网络直接访问这些图像,但您仍然可以访问它们通过您的磁盘。因此,在这种情况下,您可以通过调整代码来获取这些文件,然后直接在 http 响应中发送它们,如图所示。
【解决方案2】:

如果您想授予对您的图像的访问权限,而不是直接从网络访问图像,您可以扮演角色并授予特定用户的图像权限,并使用该用户去阅读图像,还需要包含一个索引文件,以不允许用户列出您目录中的所有图像。

使用chown 更改文件的权限

【讨论】:

    【解决方案3】:

    一个非常简单的替代方法是在 images 文件夹中添加空 index.html,以便
    http://example.com/images/my-picture.png 返回 my-picture.png 但是
    http://example.com/images/ 返回空白页!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-28
      • 2014-12-31
      • 2016-10-27
      • 2015-12-17
      • 2014-03-31
      • 2013-10-08
      • 2013-10-31
      • 2011-02-09
      相关资源
      最近更新 更多