防止目录遍历时 webroot 和文档根之间的差异

Kal*_*der 3 php directory-traversal

有人告诉我,最好将尽可能多的 PHP 文件保留在 public_html 之外。

有人建议我使用定义魔法常量来引用 public_html 之外的文件,这很好,我可以通过这样做从 public_html 上移一个目录。

我现在的问题是:

  1. webroot 和文档根有什么区别?

  2. 为了防止目录遍历之类的东西,是否可以只引用 public_html 之外的一个目录的文件夹?或者我是否需要更进一步,许多目录才能确保无法访问这些文件?

我还希望不仅要避免/防止目录遍历,还要隐藏重要文件,例如每次建立连接时都包含我的 MySQL 用户名和登录详细信息的连接文件。

Nie*_*sol 5

Webroot 和文档根只是两个不同的术语,在 Web 开发的情况下,它们的含义相同。

只能public_html通过网络访问webroot 中的文件(在您的情况下)。它之外的任何内容只能由服务器本身访问。因此,您可以在旁边public_html为您不希望通过网络访问的所有与网络相关的文件创建一个文件夹。

但是,请记住,用户永远不会看到 PHP 源代码,因为它会在文件发送给用户之前执行。这意味着即使用户尝试访问您的“连接到数据库”文件,他们得到的也只是一个空白页面,并且没有您的登录凭据的痕迹。