【问题标题】:Where to store files on server so they are not accessible through a browser?将文件存储在服务器上的哪个位置,以便无法通过浏览器访问它们?
【发布时间】:2015-09-19 00:17:15
【问题描述】:

在阅读有关允许用户将文件上传到您的服务器时维护安全性的问题和答案时,一些答案表示将文件存储在浏览器无法访问的位置,以及“文档根目录之上”。

如果我有一个在 'var/www/' 中运行的网站,例如:

var/www/MySite/Index.html

“在文档根目录之上”是指在 MySite 文件夹之上,但仍在 var/www 文件夹中,还是指在与 var/www 完全不同的位置,完全在服务器主机的文件系统上的其他位置?

另外,为什么让浏览器无法访问文件会使其更安全?谢谢。

【问题讨论】:

  • 高于或低于或无关紧要。它应该是服务器文件系统中不可由 http 请求直接访问的位置。您的 http 服务器主机配置定义了服务器提供的 sehosting 提供程序的位置,以及哪些文件夹及其内容。另一方面,您必须考虑您的 php 脚本需要在所需位置的写入权限这一事实。如果您只有一个便宜的托管服务提供商,那么这可能是个问题。在这种情况下,您应该注意通过 .htaccess 样式文件阻止对该位置的请求。

标签: php server


【解决方案1】:

我通常不会太担心将某些文件移到 www 文件夹之外,因为如果您的 www 文件夹容易受到攻击(无论是通过 apache 还是其他方式),您还有许多其他问题,而且这些文件无论如何都可以访问。将其移出 www 文件夹也会影响应用程序的可移植性,因为大多数托管公司无论如何都不允许访问您的用户 www 文件夹之外的内容。

建议在 apache 中启用 Override 并将具有以下内容的 .htaccess 文件放在您想要限制的任何文件夹中:

Order deny,allow
Deny from all

这样您的应用程序是独立的和可移植的。

Apache2.4 和 PHP5.5 进一步强化了在操作系统级别访问和执行不需要的代码的问题,因此我还建议尽可能使用这些软件包的最新版本。

【讨论】:

  • 非常感谢他们的回复,有没有办法阻止 .htaccess 文件被攻击者自己的 .htaccess 文件覆盖,或者我不需要担心?
  • 如果您的服务器配置正确,则无需担心。但是,一旦投入生产,我相信您可以在文件系统级别删除用户/组写入权限而不会产生任何不利影响..
猜你喜欢
  • 2021-05-23
  • 1970-01-01
  • 1970-01-01
  • 2013-05-22
  • 1970-01-01
  • 2021-09-02
  • 2013-02-14
  • 1970-01-01
  • 2013-09-28
相关资源
最近更新 更多