【问题标题】:PHP read files protected by ApachePHP 读取受 Apache 保护的文件
【发布时间】:2013-02-19 18:12:57
【问题描述】:

由于安全问题,我阻止了我的客户网站目录。 在这些目录中有一些 pdf 文件,用户可以在登录应用程序时阅读。 这样当他们点击pdf下载时,不会出现文件的URL。

顺便说一句,黑客可以找到它并读取这些文件,所以我屏蔽了该目录。

现在我需要让我的用户阅读 pdf。 我怎么能在php中做? 我的意思是,只有经过身份验证的用户才能读取这些文件。

非常感谢!!

【问题讨论】:

  • PHP 可以直接访问文件系统,并且可以绕过任何/所有 Apache 安全限制(除了 mod_security chroot jail)。

标签: php apache security


【解决方案1】:

由于 PHP 在 Apache 服务器中运行,它“充当”服务器用户(例如 www-data),如果 www-data 用户有权访问它,它将能够访问此目录。任何其他授权检查都必须通过身份验证和授权工作流在 PHP 中完成。

【讨论】:

  • 这个想法是:去 www.mysite.com/docs/mypdf.pdf 没有人可以下载文件。在 apache 中,我将 /docs/ 目录重定向到主页。但是一个登录的用户,抛出应用程序,可以列出他的pdf并下载它们,而不知道路径(www.mysite.com/docs/mypdf.pdf)
  • 是的,这就是重点。您将在文件系统上有一个目录,Apache 可以访问该目录以提供文件。其他一切,例如为您的软件用户设置权限,都应该在您的软件中完成。因此,您需要保留有关文件访问权限的元数据,例如一个数据库。
  • 我如何告诉 Apache 用户可以下载文件?
  • 您可以使用 HTTP 基本身份验证,但这根本不是您真正想要的。问题是您如何提供文件,考虑不链接到文件,而是使用 PHP 来“提供”文件。所以 URL 类似于/servePdf.php,然后您就可以在此处进行身份验证。永远不要暴露文件的实际 URI。
  • 我就是这样做的,我使用viewdoc.php文件打开pdf,但是出于安全原因,包含此pdf的目录现在被阻止(显示为google搜索结果)
猜你喜欢
  • 1970-01-01
  • 2020-05-09
  • 1970-01-01
  • 1970-01-01
  • 2018-12-18
  • 1970-01-01
  • 2012-11-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多