【发布时间】:2010-03-04 21:02:20
【问题描述】:
我将如何 a) 在 web 根目录之外包含一个 php 脚本(它真的只是一个简单的 ../file.php),b) 将表单数据发布到 web 根目录之外的 php 脚本。我被引导相信这是 php 安全性的基石。
【问题讨论】:
我将如何 a) 在 web 根目录之外包含一个 php 脚本(它真的只是一个简单的 ../file.php),b) 将表单数据发布到 web 根目录之外的 php 脚本。我被引导相信这是 php 安全性的基石。
【问题讨论】:
包含 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 数据——表单中输入的数据。
【讨论】:
A) 如果您的 Web 根目录是 /www/myapp/public_html,那么您的 public_html/index.php 可以通过这样做在 Web 根目录之外包含脚本
require '../includefolder/script.php"
B) 您不能将数据直接发布到 Web 根目录之外的脚本。将它们移到那里的全部目的是使它们无法直接进入;一切都必须从您的 Web 根目录中公开的可访问脚本传递给他们。
【讨论】:
$_POST 这样的超全局变量可以在包含的文件中使用,而无需任何额外的努力【讨论】: