【问题标题】:Deny direct access to any files in a folder using apache/php拒绝使用 apache/php 直接访问文件夹中的任何文件
【发布时间】:2013-05-26 16:22:17
【问题描述】:

这似乎是一个重复的问题,但我已经尝试了类似问题中给出的解决方案。

我想限制对我的 apache 服务器上几个文件夹中的文件的访问,以便它们只能通过 php 脚本提供给只有登录到我的系统部分的用户才能访问任何特定文件夹。

其他解决方案建议使用 .htaccess

deny from all
allow from 127.0.0.1

但这似乎否认了来自各处的文件。包括本地 php 脚本。

我正在考虑 .htpasswd,但这是需要处理的额外级别的用户凭据,我希望避免这种情况。

我应该如何解决这个问题?有没有更好的文件存储方式?

【问题讨论】:

  • 上述解决方案应该有效。除非您的本地脚本正在做一些“奇怪”的事情(例如通过 http 访问本地文件)
  • 我知道这也是我所期望的。但是当我调用 时,它显然不会读取它。而且我不认为包含可以被认为是一件非常奇怪的事情。
  • .htaccess 选项是您想要的。它将拒绝整个目录,包括您想要通过它为他们提供服务的脚本(如果它在那里)。解决方案是将脚本移动到其他地方
  • 你不能把文件移出网络根目录吗?对于只能通过 php 脚本提供的文件,这似乎是显而易见的解决方案。
  • 这里肯定发生了其他事情。

标签: php javascript mysql apache lamp


【解决方案1】:

htaccess 不能拒绝使用 include/require 函数通过 php 访问文件。如果您的 php 包含没有访问该文件,那么问题是该文件的路径。

【讨论】:

  • 当我从 .htaccess 中删除拒绝时,包含仍然有效。无法解释原因,我很想知道是否有任何错误输出可以告诉我发生了什么。
【解决方案2】:

不知何故php被限制了

deny from all
allow from 127.0.0.1

在受影响的文件夹中包含和要求文件。这与我可以从 apache 文档中读到的内容背道而驰,这应该如何工作,我没有真正的答案为什么。这个问题在我使用 Xampp 的本地主机和 webhotel one.com 上都存在。

我最初的问题是错误的,因为当我真正想使用 readfile 时,我使用 require 来测试我是否具有对该文件夹的读取权限。

我主要担心的是我想从一个不可访问的目录提供文件以供下载。 还有

readfile($filename);

仍然可以访问文件。

解决这个问题的原因是我意识到 readfile() 和 include() somhow 获得了不同的权限。我在任何文档中都找不到这个。

【讨论】:

    猜你喜欢
    • 2014-08-28
    • 2015-07-10
    • 1970-01-01
    • 1970-01-01
    • 2016-03-12
    • 2012-03-06
    • 2014-05-11
    • 2010-09-28
    • 2011-02-09
    相关资源
    最近更新 更多