【问题标题】:placing php script outside website root将php脚本放在网站根目录之外
【发布时间】:2010-03-04 21:02:20
【问题描述】:

我将如何 a) 在 web 根目录之外包含一个 php 脚本(它真的只是一个简单的 ../file.php),b) 将表单数据发布到 web 根目录之外的 php 脚本。我被引导相信这是 php 安全性的基石。

【问题讨论】:

    标签: php security


    【解决方案1】:

    包含 webroot 之外的脚本很容易:您将执行与 webroot 下的脚本相同的方式:

    include '../myscript.php';
    include '../library/myscript.php';
    include dirname(__FILE__) . '/../library/myscript.php';
    

    你喜欢的那个 ;-)
    不过,我会选择最后一个。


    发布到 webroot 之外的脚本是不可能的:Apache 无法提供该脚本(Apache 只提供 web-root 内部的内容)

    因此,该脚本无法通过 HTTP 访问;这意味着它不能被浏览器访问。

    但是,如果您要发布到 webroot 内部的 PHP 脚本,并且该脚本包含 webroot 外部的另一个脚本,那么第二个文件中的代码将作为第一个脚本执行。这意味着它可以访问$_POST 数据——表单中输入的数据。

    【讨论】:

      【解决方案2】:

      A) 如果您的 Web 根目录是 /www/myapp/public_html,那么您的 public_html/index.php 可以通过这样做在 Web 根目录之外包含脚本

      require '../includefolder/script.php"
      

      B) 您不能将数据直接发布到 Web 根目录之外的脚本。将它们移到那里的全部目的是使它们无法直接进入;一切都必须从您的 Web 根目录中公开的可访问脚本传递给他们。

      【讨论】:

        【解决方案3】:
        1. 就是这样。相对路径。
        2. 如果这与您之前的问题有关(您将包含此文件),那么像 $_POST 这样的超全局变量可以在包含的文件中使用,而无需任何额外的努力

        【讨论】: