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

时间:2012-07-08 01:53:08

标签: php directory-traversal

我被告知最好尽可能将我的PHP文件保留在public_html之外。

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

我现在的问题是:

  1. webroot和文档根目录之间有什么区别?

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

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

1 个答案:

答案 0 :(得分:4)

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

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

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