【问题标题】:.htaccess to deny viewing of directory from all but local host.htaccess 拒绝查看除本地主机以外的所有目录
【发布时间】:2019-05-24 00:22:01
【问题描述】:

我似乎遇到了这样一种情况,即 .htaccess 文件能够通过拒绝服务器端 PHP 访问除加载小部件以外的所有内容来成功关闭我的网站。有没有办法防止用户嗅探站点的目录(即查找包含、图像目录等),同时允许服务器上的脚本仍然正确访问它们?如果是这样,我该怎么做?

我已尝试关注另一个stackoverflow question

order deny,allow
deny from all
allow from 127.0.0.1

但它也会产生同样的问题。例如,如果 /img/ 中的 .htaccess 文件包含这些行(并且仅包含这些行),则页面上的图像将不会加载。

【问题讨论】:

  • 服务器运行的是什么操作系统?
  • 您的问题似乎包含矛盾。除非您在服务器上运行浏览器,否则仅根据其定义从 localhost 可见的站点将不允许加载图像。命令行 php 可以用来做非公共的“服务器端”活动,并且没有也不需要文档根目录或公共 http 访问的概念。请澄清。
  • 我很抱歉。我想要的是让读者不能访问子目录,但不干扰服务器提供网页(在本例中为 index.php)。服务器操作系统目前对我来说是未知的,因为它是与 ifastnet 共享主机(“超级高级”计划)。例如,如果图像存储在 /img/ 中,我不希望访问者能够浏览 mysite.domain/img,但仍然希望包括图像在内的任何页面都能够获取它们并为访问者加载。跨度>

标签: php .htaccess


【解决方案1】:

由于您对共享主机的选择有限,首先要指出的是文件系统权限非常重要。如果用户能够利用您的站点并在您的 webroot 内的文件系统上写入或更改文件,那是非常糟糕的。文件系统权限不应允许 Web 进程将文件写入您专门为此目的设置的目录以外的任何目录中。

考虑到这一点,这里有一个解决方案,可以处理像 /img 目录这样的单个目录。

在 /img 目录中创建这个 .htaccess 文件:

order allow,deny
<Files ~ "\.(jpg|jpeg|png|gif|bmp)$">
   allow from all
</Files>

这将允许正常访问图像文件并禁止访问其他任何内容。

希望您还可以看到此处使用的模式,您将允许的文件扩展名列入白名单。如果需要,您可以将相同的想法用于您拥有的任何其他目录。

【讨论】:

  • 这完全符合预期。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-15
  • 1970-01-01
  • 1970-01-01
  • 2010-11-06
  • 1970-01-01
  • 2019-10-29
相关资源
最近更新 更多